【发布时间】:2020-01-02 01:56:30
【问题描述】:
我的程序中有一个 ListBox,SelectionMode 设置为 MultiExtended。 ListBox 中的项目由用户通过 TextBox 添加。目前,在 ListBox 中选择项目的唯一目的是删除这些项目,目前通过右键单击所选项目来完成。
我还希望允许用户通过按 Delete 键来删除选定的项目,只要 ListBox 是焦点控件。当焦点控件变为任何其他控件时,我希望清除所选项目,我这样做:
Private Sub LstbxTaskIDs_Leave(sender As Object, e As EventArgs) Handles lstbxTaskIDs.Leave
lstbxTaskIDs.ClearSelected()
End Sub
这部分工作正常,但是如果用户单击返回列表框,而不是单击某个项目(即控件的空白区域),那么要么是第一项,要么是先前选择的项目(取决于是否只有一个项目或多个项目之前选择)自动选择。或者,更简洁地说:
- 用户选择列表框中的项目。
- 用户点击了表单上的其他地方。
- 已取消选择所选项目。
- 用户点击列表框的空白区域。
- 自动选择第一个项目(或最后一个选定的项目)。
我想要的唯一更改是在重新进入列表框时不会自动选择任何项目。 (注意:只有在之前选择了一个项目时才会自动选择一个项目。如果您在选择项目之前单击空白区域,则不会自动选择任何项目。
这是我尝试过的,但似乎没有任何改变:
Private Sub LstbxTaskIDs_Enter(sender As Object, e As EventArgs) Handles lstbxTaskIDs.Enter
lstbxTaskIDs.ClearSelected()
End Sub
我也试过用lstbxTaskIDs.SelectedItems.Clear()和lstbxTaskIDs.SelectedItem = -1替换lstbxTaskIDs.ClearSelected()
【问题讨论】:
-
BeginInvoke(new Action(Sub() lstbxTaskIDs.ClearSelected())) -
@Jimi 将它放在 Enter 处理程序中,它完全按照我的期望工作,谢谢!
标签: vb.net winforms listbox selecteditem