【发布时间】:2009-05-25 05:33:01
【问题描述】:
我在我的 C#2.0 Windows 窗体应用程序中使用了一个列表框。填充列表框的方法是
private void PopulateListBox(ListBox lb, ReportColumnList reportColumnList)
{
lb.DataSource = reportColumnList.ReportColumns;
lb.DisplayMember = "ColumnName";
lb.ValueMember = "ColumnName";
}
但是,当它执行该方法时,它也会调用列表框的 SelectedIndexChanged 事件处理程序,即使我没有在上面的方法中设置选定的索引。如何防止上述代码调用 SelectedIndexChanged 事件处理程序?
我希望仅当用户在 ListBox 中进行选择时才调用该事件。或者是否有任何其他事件仅适用于用户使用鼠标单击选择列表框项目?
另一方面,即使用户单击列表框中的空白区域,SelectedIndexChanged 事件也会被触发。所以我想知道它与 MouseClick 事件有什么不同?
【问题讨论】:
-
在大多数情况下,您无法阻止对象引发事件。您只能选择停止侦听事件通知。
-
我的意思是如果我能以某种方式阻止我的代码中触发事件的那部分。但正如我们所见,我无能为力,因为 PopulateListBox() 中的所有三行都是 reqd :)