我通过以下代码将项目添加到listview(c#
winforms app):
var IT = new ListViewItem(Term); IT.Checked = true; MyListView.Items.Add(IT);
但是,在添加项目后,我立即收到一个事件,表明该项目未被检查(e.Item.Checked为false).
然后我收到一个后续事件,表明它被检查(e.Item.Checked为真).
我为什么收到第一个活动?当我将项目添加到列表中时,由于某种原因,checked属性是否设置为false?鉴于我将检查状态设置为true,然后将其添加到我的事件中,这似乎很奇怪.
任何帮助非常感谢.提前致谢.
解决方法
看起来好像每个ListViewItem的CheckBox被添加到ListView时,它最初被设置为unchecked,它会触发ItemChecked事件.
在您的情况下,然后将CheckBox设置为已选中以匹配IT.Checked = true;再次发射事件.
这似乎是设计上的,我认为没有一种方法可以阻止这些事件在加载时触发.
一个解决方法(尽管有点黑客)将检查ListView的FocusedItem属性,因为它在加载ListView之前为空并且在之后保留对ListItem的引用.
void listView1_ItemChecked(object sender,ItemCheckedEventArgs e) { if (listView1.FocusedItem != null) { //Do something } }
希望这可以帮助.