如何将列表的计数绑定到标签。以下代码无法更新,列表已更改:
private IList<string> list = new List<string>();
//...
label1.DataBindings.Add("Text", list.Count, "");
答案 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();
}