【问题标题】:How to access methods in ThisAddin.cs file如何访问 ThisAddin.cs 文件中的方法
【发布时间】:2012-09-12 21:57:10
【问题描述】:

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

我在这里错过了什么?

【问题讨论】:

  • ThisAddIn 类中有构造函数吗?
  • 没有。我后来加了,还是不行
  • 您必须显示更多代码。有什么我们没有看到?
  • ThisAddIn 是为 VSTO 项目创建的自动生成文件。为了在他的回答中呼应 Mathias 的 cmets,您应该避免向此文件添加功能。

标签: c# excel vsto


【解决方案1】:

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

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

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

... 它应该很有魅力。

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

【讨论】:

    【解决方案2】:

    使用此代码:

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

    只要确保你的函数仍然是public

    【讨论】:

      猜你喜欢
      • 2011-12-03
      • 1970-01-01
      • 2012-07-24
      • 2019-06-07
      • 1970-01-01
      • 2011-03-20
      • 2014-06-20
      • 2023-04-05
      • 1970-01-01
      相关资源
      最近更新 更多