c# – 自定义功能区在ThisAddIn_Startup之前加载,但是我想在那里初始化一些东西 – 最好的解决方案?

c# – 自定义功能区在ThisAddIn_Startup之前加载,但是我想在那里初始化一些东西 – 最好的解决方案?,第1张

概述我正在开发一个带有自己的功能区选项卡的Word加载项.我的大多数实际代码都包含在一些Service类中,这些类在ThisAddIn_Startup中初始化并分配给ThisAddIn单例对象的属性.我还有一个事件监听器,它监听剪贴板事件,我希望将其作为同一对象的属性公开给其余代码. 我遇到的问题是我的功能区的Load事件在ThisAddIn的Startup事件之前触发(即使单例对象已经初始化并分配给 我正在开发一个带有自己的功能区选项卡的Word加载项.我的大多数实际代码都包含在一些Service类中,这些类在ThisAddIn_Startup中初始化并分配给ThisAddIn单例对象的属性.我还有一个事件监听器,它监听剪贴板事件,我希望将其作为同一对象的属性公开给其余代码.

我遇到的问题是我的功能区的Load事件在ThisAddIn的Startup事件之前触发(即使单例对象已经初始化并分配给Globals.ThisAddIn).在我的Ribbon的Load事件处理程序中,我想在该侦听器上安装一个处理程序,并使用其中一个服务.但是我不能,因为在程序执行的这一点上它们是空的.

这个问题的最佳解决方案是什么?我可以让所有这些东西成为ThisAddIn的静态成员并在静态构造函数中初始化它们,但这似乎是错误的,并且还破坏了拥有Startup事件(或单个对象)的全部意义.

奇怪的是,当我的Ribbon刚刚将其组件添加到内置的Add-In选项卡时,我最初没有遇到此问题 – 然后在Startup之后触发了Load事件.

(注意:我在Visual Studio 2012中使用功能区设计器完成所有这些 *** 作.)

解决方法 为此,我重写了BeginInit方法.
根据我的经验,事件按顺序发生(功能区/初始化相关):

> CreateRibbonExtensibilityObject> BeginInit> GetCustomUI> Ribbon_Load> ThisAddIn_Startup

总结

以上是内存溢出为你收集整理的c# – 自定义功能区在ThisAddIn_Startup之前加载,但是我想在那里初始化一些东西 – 最好的解决方案?全部内容,希望文章能够帮你解决c# – 自定义功能区在ThisAddIn_Startup之前加载,但是我想在那里初始化一些东西 – 最好的解决方案?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1246445.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存