vsto 多插件通信

 if (Target.Column == 5){Thread.Sleep(5000);Target.Interior.ColorIndex = 55;//触发另外一个插件Target.Application.Calculation = XlCalculation.xlCalculationAutomatic;Thread.Sleep(5000);//这行执行完之后,才会触发另外一个Target.Interior.ColorIndex = 54;}

正常人的思维是设为自动就触发另一个插件,但实际恰恰相反最后一行代码才执行另外一个插件。

如果你希望在调用 `Target.Application.Calculation = XlCalculation.xlCalculationAutomatic;` 时触发另一个插件执行,你可以尝试通过 VSTO 插件之间的通信机制来实现。一种常见的方法是使用自定义事件。你可以在一个插件中定义一个事件,在另一个插件中订阅该事件,并在触发 `Target.Application.Calculation = XlCalculation.xlCalculationAutomatic;` 时引发该事件。下面是一个简单的示例代码:在触发插件中定义事件:```csharp
public class TriggerPlugin
{// 定义事件public event EventHandler CalculationAutomatic;// 触发事件的方法protected virtual void OnCalculationAutomatic(EventArgs e){CalculationAutomatic?.Invoke(this, e);}public void PerformCalculation(){// 执行自动计算Target.Application.Calculation = XlCalculation.xlCalculationAutomatic;// 触发事件OnCalculationAutomatic(EventArgs.Empty);}
}
```在接收插件中订阅事件:```csharp
public class ReceiverPlugin
{public ReceiverPlugin(TriggerPlugin triggerPlugin){// 订阅事件triggerPlugin.CalculationAutomatic += TriggerPlugin_CalculationAutomatic;}// 事件处理程序private void TriggerPlugin_CalculationAutomatic(object sender, EventArgs e){// 在这里执行触发时需要执行的操作}
}
```这样,在触发插件中调用 `PerformCalculation` 方法时,就会触发接收插件中的事件处理程序,从而执行相应的操作。

如果另一个插件没有代码,并且无法通过上述方式进行通信,那么在目前的情况下,似乎没有直接的方法可以在 `Target.Application.Calculation = XlCalculation.xlCalculationAutomatic;` 这一行代码触发另一个插件的功能。

但是,你可以考虑以下两种替代方案:

1. **间接触发:** 如果另一个插件与 Excel 相关联,你可以尝试触发 Excel 中的某个事件,然后让另一个插件监听该事件并执行相应的功能。例如,你可以在设置 `Target.Application.Calculation` 属性后,手动触发 Excel 的事件,比如 `Workbook_SheetCalculate` 或 `Workbook_AfterCalculate` 等,另一个插件可以监听这些事件并执行相应的操作。

2. **定时执行:** 如果无法通过事件触发另一个插件的功能,你可以考虑定时执行另一个插件的功能。在目标插件中设置一个定时器,定期检查条件是否满足,如果满足则执行相应的功能。在你的代码中,你可以在设置 `Target.Application.Calculation` 属性后,等待一段时间,然后再执行相应的操作,这样可以模拟定时执行的效果。

这两种方法都是间接的方式,没有直接触发另一个插件的功能,但是可以在不修改另一个插件代码的情况下实现你的需求。

终极方法是开启自动计算放到前一个插件的最后代码执行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/748719.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python win32com.client.Dispatch打开Word文档并导出为 PDF时失败Command failed

Python win32com.client.Dispatch打开Word文档并导出为 PDF时失败Command failed 输出异常: (-2147352567, Exception occurred., (0, uMicrosoft Word, uCommand failed, uwdmain11.chm, 36966, -2146824090), None)调试之后,主要是下面几个原因: 路径…

前端实例:页面布局1(后端数据实现)

效果图 注&#xff1a;这里用到后端语言php&#xff08;页面是.php文件&#xff09;,提取纯html也可以用 inemployee_index.php <?php include(includes/session.inc); $Title _(内部员工首页); $ViewTopic 内部员工首页; $BookMark 内部员工首页; include(includes/…

Vue学习日记 Day6 —— Vuex

一、vuex概述 1、目标&#xff1a;明确vuex是什么&#xff0c;应用场景&#xff0c;优势 2、是什么&#xff1a;vuex是一个vue的状态管理工具&#xff0c;状态就是数据 (简述&#xff1a;vuex是一个插件&#xff0c;可以帮我们管理vue通用的数据) 3、场景&#xff1a; (1)…

物理隔离条件下,如何安全高效地进行内外网文件导入导出?

内外网文件导入导出通常指的是在内部网络&#xff08;内网&#xff09;和外部网络&#xff08;外网&#xff09;之间传输文件的过程。这在企业环境中尤其常见&#xff0c;因为内部网络通常包含敏感数据&#xff0c;而外部网络&#xff08;如互联网&#xff09;则允许更广泛的访…

基于 Spark 的电商用户行为分析系统

摘 要 针对传统的大数据处理框架 Hadoop 在执行计算任务时抽象层次低、运行速度慢、无法实时计算等问题, 提出了一种基于内存的分布式框架 Spark 作为计算引擎的方法。结合 Hadoop 框架中的分布式文件存储 技术,设计了一个电商用户行为分析系统。首先根据数据特点建立用户画…

生成对抗网络(GANs):技术演化与广泛应用

目录 前言1 技术原理1.1 基本构成1.2 训练过程1.3 数学原理 2 应用领域2.1 图像合成2.2 数据增强2.3 风格迁移2.4 超分辨率 结论 前言 生成对抗网络&#xff08;GANs&#xff09;&#xff0c;自2014年由Ian Goodfellow及其同事首次提出以来&#xff0c;已经引起了广泛的关注和…

JavaScript进阶:js的一些学习笔记-4

文章目录 1. 拷贝1. 浅拷贝2. 深拷贝 2. 异常处理 1. 拷贝 这里指的拷贝是指拷贝引用类型的数据(对象) 1. 浅拷贝 拷贝对象&#xff1a;Object.assign() 或者 {…obj} 展开运算符 const obj {name:liuze,age:23 } const o {...obj}; o.age 22; console.log(o); console.…

Sparse Convolution 讲解

文章目录 1. 标准卷积与Sparse Conv对比(1)普通卷积(2) 稀疏卷积(3) 改进的稀疏卷积(subm)2 Sparse Conv 官方API3. Sparse Conv 计算3. 1 Sparse Conv 计算流程3. 2 案例3.2.1 普通稀疏卷积3.2.2 subm模式的稀疏卷积3D点云数据非常稀疏,尤其体素化处理后(比如200k的点放…

【spring】@PropertySource 注解学习

PropertySource介绍 PropertySource是Spring框架中的一个注解&#xff0c;主要用于Java配置类中&#xff0c;用于引入额外的属性文件&#xff0c;以便在Spring应用上下文中使用这些属性。 在Spring 3.1引入Java配置后&#xff0c;我们可以通过Configuration注解的类和Bean注解…

独孤思维:你这样做副业,招人烦

01 做副业的&#xff0c;大家都不傻。 不要加群就bao粉。 只会招人烦。 不能靠价值吸引来的粉丝&#xff0c;你想想他对你的忠诚度能有多少&#xff1f; 无非是快速灌流量&#xff0c;得到心理上的慰藉。 02 我的主业&#xff0c;是互联网医疗。 最近&#xff0c;上线了…

Windows11企业版安装WSL2和Ubuntu发布版(避坑)

背景 win10企业版升级win11企业版后&#xff0c;安装WSL2&#xff0c;最后安装WSL的Ubuntu发布版&#xff0c;尝试网上各种方法&#xff0c;还是出现文章第三节所写的问题&#xff0c;差点被这问题搞放弃了&#xff0c;全网少有针对这个问题的答案&#xff0c;有也不顶用&…

【python】自动化工具Selenium与playwright去除webdriver检测

对这个世界如果你有太多的抱怨 跌倒了就不敢继续往前走 为什么人要这么的脆弱 堕落 请你打开电视看看 多少人为生命在努力勇敢的走下去 我们是不是该知足 珍惜一切 就算没有拥有 &#x1f3b5; 周杰伦《稻香》 # -*- coding:utf-8 -*- import timefrom s…

k8s-高可用etcd集群 26

reset掉k8s2&#xff0c;k8s3&#xff0c;k8s4节点 清理完网络插件后重启 快速创建一个k8s集群 修改初始化文件 添加master节点 备份 查看etcd配置 启动docker 将etcd二进制命令从容器拷贝到本机 备份 查看快照状态 删除集群资源 恢复 停掉所有的核心组件 从快照恢复 重启所有…

知识蒸馏Matching logits与RocketQAv2

知识蒸馏Matching logits 公式推导 刚开始的怎么来&#xff0c;可以转看下面证明梯度等于输出值-标签y C是一个交叉熵&#xff0c;我们要求解的是这个交叉熵对的这个梯度。就是你可以理解成第个类别的得分。就是student model&#xff0c;被蒸馏的模型&#xff0c;它所输出的…

RTT——stm32f103的can总线通信

1.创建工程 2.配置时钟和引脚 引脚配置使能CAN 时钟配置&#xff0c;采用外部高速时钟 生成MDK工程后复制相关初始化函数到RTT-studio中 将void HAL_CAN_MspInit(CAN_HandleTypeDef* canHandle)函数复制至broad.c文件中 将时钟配置函数复制到drv_clk.c中&#xff0c;只复制函数…

C语言—打印如图矩阵

输出矩阵 在一个二维数组中形成并输出如下矩阵: #include <stdio.h> main() { int i,j,a[5][5];for(i0;i<4;i)for(j0;j<4;j)if(i<j) a[i][j]1;else a[i][j]i-j1;for(i0;i<4;i){ for(j0;j<4;j)printf("%d ",a[i][j]);printf("…

Xilinx FPGA模式配置

Xilinx FPGA模式配置 Xilinx UltraScale FPGA有7种配置模式&#xff0c;由模式输入引脚M[2:0]决定。七种模式如图1所示。 图1 7种配置模式 7种模式可分为3大类&#xff0c; 1、JTAG模式&#xff08;可归为从模式&#xff09;&#xff1b; 2、主模式&#xff1b; 3、从模式…

影响交易收益的因素有哪些?

在尝试做交易时&#xff0c;你可能会问自己一个问题&#xff1a;交易一天能赚多少钱&#xff1f;“如果我全职投入交易&#xff0c;一天能赚多少&#xff1f;”或者更广泛地说&#xff0c;“交易能为我带来怎样的财富&#xff1f;”这些问题本质上都充满了不确定性&#xff0c;…

Spring Cloud Alibaba微服务从入门到进阶(一)(SpringBoot三板斧、SpringBoot Actuator)

Springboot三板斧 1、加依赖 2、写注解 3、写配置 Spring Boot Actuator Spring Boot Actuator 是 Spring Boot 提供的一系列用于监控和管理应用程序的工具和服务。 SpringBoot导航端点 其中localhost:8080/actuator/health是健康检查端点&#xff0c;加上以下配置&#xf…

pytorch之诗词生成--2

先上代码: # -*- coding: utf-8 -*- # File : dataset.py # Author : AaronJny # Time : 2019/12/30 # Desc : 构建数据集 from collections import Counter import math import numpy as np import tensorflow as tf import settingsclass Tokenizer:""&…