Winforms绑定问题

时间:2011-06-16 05:35:11

标签: c# .net winforms data-binding collections

我对win形式的绑定相对较新。为了学习该主题,我设置了以下测试应用程序。一个基本的winform,其中包含ListBoxButton

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中。谁能帮我理解收集数据绑定的基础知识呢?

1 个答案:

答案 0 :(得分:13)

List<String>替换为BindingList<String>

BindingList class可以用作基类来创建双向数据绑定机制。 BindingList提供了IBindingList接口的具体通用实现。

List<T>类不提供有关集合更改的任何通知。因此,ListBox无法知道添加了新元素。但是,如果您使用实现IBindingList Interface的集合,则ListBox会订阅ListChanged事件。这就是知道何时刷新自己的方式。