ListView FocusedItem 变为 NULL

5 c# listview selection

程序运行时,出现一系列ListView表单。我们用项目(作为字符串)填充其中之一,并检查选择的状态是否已更改。更改后,我们使用 FocusedItem.Text 获取所选项目的文本。第一次工作正常,但当进行另一次选择时,所选项目将返回 null。

我们可以暂时解决此问题的唯一方法是清除并重新填充表单。缺点是我们会丢失突出显示的项目。必须有另一种方法来解决这个问题。也许我们还不清楚ListView到底是如何工作的?

有任何想法吗?

cha*_*rit 0

我已经运行了一个测试程序,没有看到 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)检查是否适合您的情况?