2011-08-22 33 views
2

我正在使用C#为excel 2010加载插件。我有一个现有的工作表,它有一些控件,即一个组合框。我正在尝试编写一些代码,这些代码将在组合框的文本属性中放置一定的值,但我很难访问该控件来执行此操作。C#excel插件 - 访问控件

组合框被命名为 'ComboBox1' 但如果我尝试类似...

var combo = Controls["ComboBox1"]; 

我得到一个ArgumentOutOfRangeException。

寻找我应该做的事情的探索性方法也没有真正提供有用的信息。例如,如果要写;

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

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

+1

您是否将其添加为窗体控件或ActiveX控件?如果它是一个ActiveX控件,请尝试'ActiveSheet.OLEObjects(“ComboBox1”)。object.value =“foo”' – Banjoe

+0

好问题。我没有制作表格,但我会发现什么是什么。 –

+0

你可以尝试循环一些像'foreach(控件中的Control c)MessageBox.Show(c.GetType()。ToString());'看看它的输出是什么。 –

回答

1

我并不完全确定这个问题,但我已经做了插件的单词,如果它的窗口形式这应该很好地工作。

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