学习微软 VSTO 自定义"任务窗格"示例的异常的解决方案

本文介绍了一种在VSTO开发过程中遇到的任务窗格无法显示的问题及其解决方案。通过调整代码逻辑,确保了任务窗格在不同环境下都能正常显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

近日,在学习 VSTO 开发时,仿照微软官方 VSTO 开发实例 ➔ 自定义"任务窗格"时,遇到异常,查询网上很久都无解。昨日一次偶然发现了破绽,现将解决方法记录如下:

VSTO Excel 自定义"任务窗格"官网实例代码无效 的解决方案

微软官网 VSTO 开发实例中"向应用程序添加自定义任务窗格"给出两段代码,分别是:

public partial class ThisAddIn
{
	private MyUserControl myUserControl1;
	private Microsoft.Office.Tools.CustomTaskPane myCustomTaskPane;
	//启动
	private void ThisAddIn_Startup(object sender, System.EventArgs e)
	{
		myUserControl1 = new MyUserControl();
		myCustomTaskPane = this.CustomTaskPanes.Add(myUserControl1, "My Task Pane");
		myCustomTaskPane.Visible = true;
	}
}

该实例我分别在两台PC上进行运行,其中一台与官网效果无误,完美实现效果。另一台始终弹不出“任务窗格”,多次检查代码和过程,仍然依旧无效,甚至重建项目重做,仍然无效。甚至设置断点跟踪都看不到 bug,但就是没效果。

几天后,再次进行下一步的学习时,无意中发现了异常,用不是很规范的UML时序图描述为下图: VSTO CustomTaskPane Error

上图由蓝色粗线将两台PC运行时序分开,上半部是正常效果,下半部是错误效果的时序。

造成影响估计是 Office 其他插件导致的。

解决方法

将代码修改为:

public partial class ThisAddIn
{
	private MyUserControl myUserControl1;
	private Microsoft.Office.Tools.CustomTaskPane myCustomTaskPane;
	int i=0; //避免 CustomTaskPane 被重复 new 。
	private void ThisAddIn_Startup(object sender, System.EventArgs e)
	{
		if(i==0)
		{
		myUserControl1 = new MyUserControl();
		myCustomTaskPane = this.CustomTaskPanes.Add(myUserControl1, "My Task Pane");
		myCustomTaskPane.Visible = true;
		i++;
		}
	}
}

修改后的代码,在不同 PC 上均可靠运行。

转载于:https://my.oschina.net/primates/blog/3033119

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值