【问题标题】:C# excel addin - Accessing ControlsC# excel 插件 - 访问控件
【发布时间】:2011-08-22 18:43:48
【问题描述】:

我正在使用 C# 为 excel 2010 开发插件。我有一个现有的工作表,其中包含一些控件,即 ComboBox。我正在尝试编写一些代码,将某个值放在组合框的文本属性中,但我很难访问该控件。

组合框名为“ComboBox1”,但如果我尝试类似...

var combo = Controls["ComboBox1"];

我得到一个 ArgumentOutOfRangeException。

找出我应该做什么的探索性方法也不能真正提供有用的信息。例如,如果要写;

MessageBox.Show(Controls[0].GetType())

显示的消息是“NamedRangeImpl”,它看起来根本不像一个控件。所以我的问题是,如何从我的代码中访问工作表上的控件?

【问题讨论】:

  • 你是把它添加为表单控件还是 ActiveX 控件?如果是 ActiveX 控件,请尝试 ActiveSheet.OLEObjects("ComboBox1").object.value = "foo"
  • 好问题。我没有制作这张单子,但我会找出是什么。
  • 你可以尝试像foreach (Control c in Controls) MessageBox.Show(c.GetType().ToString()); 这样循环,看看它的输出是什么。
  • @Mark,问题中提到了类型。他们都以“NamedRangeImpl”的形式返回

标签: c# excel add-in


【解决方案1】:

我不太确定这个问题,但我已经为 word 制作了插件,如果它像 windows 窗体,这应该可以很好地工作。

foreach (Control c in Controls) 
   if (c.Name == "comboBox1") {
      ComboBox box = (ComboBox)c;
      box.Items.Add("Thing added");
   }

【讨论】:

    猜你喜欢
    • 2018-04-30
    • 1970-01-01
    • 1970-01-01
    • 2012-06-18
    • 1970-01-01
    • 1970-01-01
    • 2017-04-29
    • 2018-06-30
    • 1970-01-01
    相关资源
    最近更新 更多