如何将列表计数绑定到WinForms中的标签?

时间:2009-03-12 18:27:53

标签: c# winforms

如何将列表的计数绑定到标签。以下代码无法更新,列表已更改:

private IList<string> list = new List<string>();
//...
label1.DataBindings.Add("Text", list.Count, "");

3 个答案:

答案 0 :(得分:1)

Bindings侦听IPropertyChanged接口的PropertyChanged事件。我认为List.Count在更改后不会被报告为PropertyChanged事件。

您可以做的是实现自定义列表或查找通知何时更改计数的集合。

答案 1 :(得分:1)

根据Marc Gravell的问题,他有suggested to create a facade包装你要绑定到label1.Text的集合

我试图实现一个(为了好玩)并且能够绑定到 Count 工作。
CountList<T>是一个包装要绑定到的集合的外观。

这是完整的演示。

CountList<T>

答案 2 :(得分:0)

如果您有列表框的数据源,则可以使用DataSourceChanged。请记住更新并重新绑定数据源。

这可能有点犹太人,但这是我合作的例子:

List<int> collection = new List<int>();
    public Form1()
    {
        InitializeComponent();
        listBox1.DataSourceChanged += listbox1_Changed;
    }

    private void button1_Click(object sender, EventArgs e)
    {
        collection.Add(new Random().Next(100));
        listBox1.BeginUpdate();
        listBox1.DataSource = null;
        listBox1.DataSource = collection;
        listBox1.EndUpdate();
    }
    private void listbox1_Changed(object sender, EventArgs e)
    {
        textBox1.Text = collection.Count.ToString();
    }