【发布时间】: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”的形式返回