You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 06:42:44