我在C#中创建了一个Excel Addin项目。现在解决方案包含一个文件ThisAddin.cs,它有一个ThisAddin类。后来我在同一个解决方案中添加了一个名为Form的项目。在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();
}
我在这里缺少什么?
答案 0 :(得分:10)
您正在从错误的方向接近问题。当您单击该按钮时,您不想创建新的加载项,您真正想要的是访问VSTO在Excel启动时为您创建的加载项实例,该实例可通过{ {1}}。
将表单中的代码更改为以下内容:
Globals.ThisAddIn
......它应该有魅力。
话虽如此,有一个很好的理由让这个方法出现在ThisAddIn上吗?通常,当Excel启动/关闭时,应使用ThisAddIn来连接和拆除加载项,我建议尽可能少地使用逻辑。
答案 1 :(得分:3)
使用此代码:
Globals.ThisAddIn.Application.StatusBar = "Referesh clicked!!!."; Globals.ThisAddIn.RefreshExcelData();
确保您的功能仍为public
。