我通过以下代码将项目添加到 ListView (c# winforms 应用程序):
var IT = new ListViewItem(Term);
IT.Checked = true;
MyListView.Items.Add(IT);
但是,在添加项目后,我立即收到一个事件,表明该项目未被选中(e.Item.Checked 为 false)。
然后我收到一个后续事件,表明它已被选中(e.Item.Checked 为真)。
为什么我会收到第一个事件?当我将项目添加到列表时,是否出于某种原因将选中的属性设置为 false?考虑到我在将其添加到我的事件之前将选中状态设置为 true,这似乎很奇怪。
非常感谢任何帮助。提前致谢。
最佳答案
似乎当每个 ListViewItem 的 CheckBox 添加到 ListView 时,它最初设置为未选中,这会触发 ItemChecked 事件。
在您的情况下,CheckBox 然后被设置为已选中以匹配 IT.Checked = true;
再次触发事件。
这似乎是设计使然,我认为没有一种方法可以阻止这些事件在加载时触发。
一个解决方法(虽然有点 hack)是检查 FocusedItem ListView 的属性,因为在加载 ListView 并在此之后保留对 ListItem 的引用之前,该属性为 null。
void listView1_ItemChecked(object sender, ItemCheckedEventArgs e)
{
if (listView1.FocusedItem != null)
{
//Do something
}
}
希望这对您有所帮助。
关于c# - 为什么 ListView 会触发事件,指示添加后未选中选中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7506588/