程序运行时,出现一系列ListView表单。我们用项目(作为字符串)填充其中之一,并检查选择的状态是否已更改。更改后,我们使用 FocusedItem.Text 获取所选项目的文本。第一次工作正常,但当进行另一次选择时,所选项目将返回 null。
我们可以暂时解决此问题的唯一方法是清除并重新填充表单。缺点是我们会丢失突出显示的项目。必须有另一种方法来解决这个问题。也许我们还不清楚ListView到底是如何工作的?
有任何想法吗?
我已经运行了一个测试程序,没有看到 FocusedItem 可能为空的实例。
你能发布一些代码吗?
这是我选择项目“a”然后选择项目“b”然后单击空白区域后得到的结果:
ItemSelectionChanged
Item : ListViewItem: {a}
IsSelected : True
SelectedItem : ListViewItem: {a}
FocusedItem : ListViewItem: {a}
SelectedIndexChanged
SelectedItem : ListViewItem: {a}
FocusedItem : ListViewItem: {a}
ItemSelectionChanged
Item : ListViewItem: {a}
IsSelected : False
SelectedItem : null
FocusedItem : ListViewItem: {a}
SelectedIndexChanged
SelectedItem : null
FocusedItem : ListViewItem: {a}
ItemSelectionChanged
Item : ListViewItem: {b}
IsSelected : True
SelectedItem : ListViewItem: {b}
FocusedItem : ListViewItem: {b}
SelectedIndexChanged
SelectedItem : ListViewItem: {b}
FocusedItem : ListViewItem: {b}
ItemSelectionChanged
Item : ListViewItem: {b}
IsSelected : False
SelectedItem : null
FocusedItem : ListViewItem: {b}
SelectedIndexChanged
SelectedItem : null
FocusedItem : ListViewItem: {b}
Run Code Online (Sandbox Code Playgroud)
注意到它FocusedItem永远不会为空。
你的情况也一样吗?
简单的if (listView.FocusedItem == null)检查是否适合您的情况?