将formboBox从form1复制到form2的最佳方法

时间:2012-09-11 12:05:52

标签: c# .net winforms

首先,我在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:公开控制不是我喜欢的,也不是首选。

1 个答案:

答案 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);
  ...
}

这样可以防止不同表单之间的耦合,并且仍然只有一个位置可以导出列表中的值。