我在 C# 中创建了一个 Excel 插件项目。现在该解决方案包含一个文件 ThisAddin.cs,其中有一个类 ThisAddin。后来我在同一个解决方案中添加了一个名为 Form 的项目。在表单中,当我单击一个按钮时,对于该按钮单击事件,我想调用 ThisAddin.cs 文件中的一个方法。

namespace ExcelAddIn
{
    public partial class ThisAddIn
    {
        public void RefreshExcelData()
        {
        }
    }
}

现在在 MyForm.cs 中,尝试为 ThisAddin 类创建对象时出现编译错误,即 Thisaddin 类没有采用 0 个参数的构造函数。
private void btnUploadTestCases_Click(object sender, EventArgs e)
{
    ThisAddIn objrefresh = new ThisAddin();
}

我在这里缺少什么?

最佳答案

你从错误的方向解决问题。当您单击该按钮时,您不想创建新的加载项,您真正想要的是访问 VSTO 在 Excel 启动时为您创建的加载项实例,该实例可通过 Globals.ThisAddIn 访问。

将表单中的代码更改为以下内容:

private void btnUploadTestCases_Click(object sender, EventArgs e)
{
    var addIn = Globals.ThisAddIn;
    addIn.RefreshExcelData();
}

...它应该很有魅力。

话虽如此,这个方法是否有充分的理由在 ThisAddIn 上?一般来说,ThisAddIn 应该用于在 Excel 启动/关闭时连接和拆除加载项,我建议在其中放置尽可能少的逻辑。

10-08 00:08