如何以两种形式同步列表框项?

时间:2013-08-31 16:24:17

标签: c# winforms sync

如何在C#中同步form1和form2中的列表框项? 即,当我在form1上的列表框中添加一个项目时,将其同时添加到form2中放置的列表框中。

请帮帮我。 感谢。

1 个答案:

答案 0 :(得分:1)

最简单(也是最好)的方法是将ListBoxes'(甚至3,4或更多)DataSource绑定到同一个。我们必须使用BindingList<>而不是List来提高通知收集更改的功能。

BindingList<object> listData = new BindingList<object>();
listBox1.DataSource = listData;
public void ShowForm2(){
  ListBox list = new ListBox();
  list.DataSource = listData;
  Form f = new Form() { BindingContext = this.BindingContext };//Set BindingContext the same to synchronize tracking item in both listBoxes.
  list.Parent = f;
  f.Show();
}
//This is used to add new item to the source
public void AddItem(object item){
   listData.Add(item);
}
//This is used to remove an item from the source
public void RemoveItem(object item){
   listData.Remove(item);
}
//This is used to remove an item by index from the source
public void RemoveItemAt(int index){
   listData.RemoveAt(index);
}

尝试自行为表单添加控件。调用ShowForm2()以显示form2。然后尝试调用AddItem添加一些项目进行测试。通常我们会将字符串添加为列表框的新项目(AddItem("item string"))。