首先,我在form1上将modifier属性设置为comboBox1的“Internal”。
我使用了以下代码:
form1 f1 = new form1();
object[] obj = new object[f1.comboBox1.Items.Count];
f1.comboBox.Items.CopyTo(obj, 0);
comboBox2.Items.AddRange(obj);`
这是最好的方法吗?
PS:我无法做到这一点:Best way to access a control on another form in Windows Forms?可以工作。
PPS:公开控制不是我喜欢的,也不是首选。
答案 0 :(得分:2)
如果您想要两个包含相同项目的下拉列表,那么将这些项目存储在常用位置并从那里构建两个组合框会更好。
e.g。
public class Context{
...
...
public List<Foo> FooItems {
get{...}
}
}
public class Form1 {
...
combobox.AddRange(this.context.FooItems);
...
}
public class Form2 {
...
combobox.AddRange(this.context.FooItems);
...
}
这样可以防止不同表单之间的耦合,并且仍然只有一个位置可以导出列表中的值。