C# 如何访问此addin.cs文件中的方法

C# 如何访问此addin.cs文件中的方法,c#,excel,vsto,C#,Excel,Vsto,我已经在C#中创建了一个Excel加载项项目。现在,解决方案包含一个文件ThisAddin.cs,该文件具有一个类ThisAddin。后来,我在同一个解决方案中添加了一个名为Form的项。在表单中,当我单击按钮时,对于该按钮单击事件,我希望调用ThisAddin.cs文件中的方法 namespace ExcelAddIn { public partial class ThisAddIn { public void RefreshExcelData()

我已经在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();
}

我在这里遗漏了什么?

您从错误的方向处理问题。单击该按钮时,您不想创建新的外接程序,您真正想要的是在Excel启动时访问VSTO为您创建的外接程序实例,该实例可通过
Globals.ThisAddIn
访问

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

private void btnUploadTestCases_Click(object sender, EventArgs e)
{
    var addIn = Globals.ThisAddIn;
    addIn.RefreshExcelData();           
}
。。。而且它应该很有魅力

话虽如此,是否有充分的理由将此作为一种方法应用于此Addin?一般来说,当Excel启动/关闭时,应使用ThisAddIn连接和拆除外接程序,我建议尽可能少地在其中添加逻辑。

使用以下代码:

Globals.ThisAddIn.Application.StatusBar=“Referesh clicked!!!”;Globals.ThisAddIn.RefreshExcelData()


只需确保您的功能仍然是公共的

ThisAddIn
类中是否有构造函数?没有。我后来添加了它,但它仍然不起作用。您需要显示更多代码。有什么我们没有看到的?ThisAddIn是为VSTO项目创建的自动生成文件。为了回应Mathias在回答中的评论,您应该避免向该文件添加功能。