我对win形式的绑定相对较新。为了学习该主题,我设置了以下测试应用程序。一个基本的winform,其中包含ListBox
和Button
。
public partial class Form1 : Form
{
public List<String> stringList = new List<String>();
public Form1()
{
InitializeComponent();
stringList.Add("First");
listBox1.DataSource = stringList;
}
private void button1_Click(object sender, EventArgs e)
{
stringList.Add("Second");
}
}
字符串“First”在应用程序启动时显示在listBox1
中。但是,当我按下向stringList
添加新字符串的按钮时,新项目未显示在listBox1
中。谁能帮我理解收集数据绑定的基础知识呢?
答案 0 :(得分:13)
将List<String>
替换为BindingList<String>
。
BindingList class可以用作基类来创建双向数据绑定机制。 BindingList提供了IBindingList接口的具体通用实现。
List<T>
类不提供有关集合更改的任何通知。因此,ListBox
无法知道添加了新元素。但是,如果您使用实现IBindingList Interface的集合,则ListBox会订阅ListChanged
事件。这就是知道何时刷新自己的方式。