在设置DataSource后,是否有人知道要在ListBox控件上何时完成数据绑定时要挂钩的事件?
挂起到DataSourceChanged并不起作用,因为当触发此事件时,Items集合在控件上仍为空。
答案 0 :(得分:1)
简单的方法是使用DataSource集合:
void listBox1_DataSourceChanged(object sender, EventArgs e) {
var count = ((ICollection)listBox1.DataSource).Count;
}
适当地投射数据源。
否则,您可以使用BeginInvoke在DataSourceChanged事件运行之后获取更新:
void listBox1_DataSourceChanged(object sender, EventArgs e) {
this.BeginInvoke(new Action(() => {
var count = listBox1.Items.Count;
}));
}
答案 1 :(得分:0)
在设置DataSource后,是否有人知道要在ListBox控件上何时完成数据绑定时要挂钩的事件?
没有这样的事件。但是你可以创建自己的ListBox
子类并公开这样的事件
public class MyListBox : ListBox
{
public event EventHandler DataSourceApplied;
protected override void OnDataSourceChanged(EventArgs e)
{
base.OnDataSourceChanged(e);
var handler = DataSourceApplied;
if (handler != null) handler(this, EventArgs.Empty);
}
}
答案 2 :(得分:0)
谢谢你们。我实际上使用Resharper反编译ListBox代码并发现DisplayMemberChanged事件为我做了伎俩所以我使用了它。谢谢你的建议!