![](/img/trans.png)
[英]SelectedIndexChanged event of dropDownList not firing c#
[英]C#: bizzare multiple event firing for listview on SelectedIndexChanged
如果我将listview组件放入Windows窗体中,并将波纹管代码添加到它的SelectedIndexChanged
事件中:
MessageBox.Show("Fired!");
foreach (int selectedIndex in listView1.SelectedIndices)
{
listView1.Items[selectedIndex].Selected = false;
listView1.Items[selectedIndex].Focused = false;
}
该消息框将显示4次! 这是为什么?
注意 :我使用循环清除列表视图中的选定项目
您不应在SelectedIndexChanged
事件中更改选择。 更一般而言, 您不应在属性已更改的通知内更改属性 。
如果您需要更改属性以响应通知,请查看处理相应的*Changing
事件。 并非是某事已更改(在事实之后发生)的通知,而是某事即将发生更改(在事实之前发生)的通知。 在SelectedIndexChanging
事件中,您有几个不同的选项可以更改事件的过程:
e.Cancel
属性设置为true
,就像上面所说的那样。 它将取消事件并防止所选索引更改。 e.NewSelectedIndex
属性更改选择。 只需将此属性设置为要选择的项目的索引即可。 而且,如果您想响应其他事件( 例如 ,单击不属于ListView的“清除选择”按钮或类似的上下文菜单项)而清除ListView中的选定项目,则不要完全需要一个循环。 只需清除控件的SelectedItems
集合: myListView.SelectedItems.Clear()
。 同样,您不能这样做以响应SelectedIndexChanged
事件,否则您将遇到触发大量通知的相同问题。
坦白地说,您在此处编写的代码没有任何意义。 当用户尝试选择一个项目时,为什么要清除所有选中的项目? 如果不想允许选择,请通过将控件的Enabled
属性设置为false
来禁用该控件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.