如何在C# Excel VSTO插件的ThisAddIn类Workbook_Open中打开fmX窗体
在Excel VSTO插件的Workbook_Open中打开自定义窗体fmX
要在ThisAddIn类的Workbook_Open方法中实现打开自定义窗体fmX,只需在事件处理方法中实例化窗体并调用显示方法即可,以下是完整的实现代码:
using System; using System.Windows.Forms; using Microsoft.Office.Interop.Excel; namespace YourAddInNamespace { public partial class ThisAddIn { private void ThisAddIn_Startup(object sender, EventArgs e) { // 注册WorkbookOpen事件 Application.WorkbookOpen += Workbook_Open; } private void Workbook_Open(Workbook wb) { // --- 补充的代码开始 --- // 实例化自定义窗体 fmX customForm = new fmX(); // 模态方式打开窗体(阻塞Excel操作,直到窗体关闭) customForm.ShowDialog(); // 如果需要非模态打开(不阻塞Excel),替换为下面的代码: // customForm.Show(); // --- 补充的代码结束 --- } private void ThisAddIn_Shutdown(object sender, EventArgs e) { // 取消事件订阅,避免内存泄漏 Application.WorkbookOpen -= Workbook_Open; } #region VSTO 自动生成代码 private void InternalStartup() { Startup += ThisAddIn_Startup; Shutdown += ThisAddIn_Shutdown; } #endregion } }
关键注意点
- 确保项目已引用
System.Windows.Forms程序集:右键项目 → 添加 → 引用 → 找到并勾选System.Windows.Forms。 - 如果
fmX位于其他命名空间,需添加对应的using语句,或者使用完整命名空间实例化(例如new YourFormNamespace.fmX())。 - 模态与非模态的选择:
ShowDialog():窗体打开时,Excel的其他操作会被阻塞,直到窗体关闭。Show():窗体打开后,用户仍可操作Excel,适合需要同时交互的场景。
内容的提问来源于stack exchange,提问作者kyc
相关产品推荐
相关产品推荐

