C# ListBox.SelectedItem为空通知

C# ListBox.SelectedItem为空通知,c#,winforms,listbox,selecteditem,C#,Winforms,Listbox,Selecteditem,我需要跟踪列表框中当前选定的项,以便在选定项变为空时关闭表单上的其他一些控件。我尝试使用SelectedIndexChanged事件,但当SelectedItem为null时,它不会引发 你能给点建议吗 更新:所选项变为null,因为我使用空集合设置了新数据源值。也许这是我问题的原因 我需要解释一下。列表框表示来自数据库的项的集合。当用户添加/编辑/删除某些项目时,我通过调用以下方法刷新列表框: private void RefreshList() { lbParts.DataSour

我需要跟踪列表框中当前选定的项,以便在选定项变为空时关闭表单上的其他一些控件。我尝试使用SelectedIndexChanged事件,但当SelectedItem为null时,它不会引发

你能给点建议吗

更新:所选项变为null,因为我使用空集合设置了新数据源值。也许这是我问题的原因

我需要解释一下。列表框表示来自数据库的项的集合。当用户添加/编辑/删除某些项目时,我通过调用以下方法刷新列表框:

private void RefreshList()
{
     lbParts.DataSource = this.database.Fetch<part>(string.Empty);
}
private void RefreshList()
{
lbParts.DataSource=this.database.Fetch(string.Empty);
}

它从数据库中获取所有项目,将其转换为
List
集合并设置为ListBox数据源。

这是不正确的。SelectedIndexChanged在SelectedItem变为null时引发。在这种情况下,SelectedIndex将为-1


编辑:当您更改数据源时,您不会被SelectedIndex更改,这一点确实是正确的。我建议您在更改数据源之前立即显式设置SelectedIndex=-1,或者也处理数据源更改事件?如果列表框中的可用选项发生了更改,那么我假设这就是对表单可访问控件执行刷新的原因?

它何时变为空?你是重新加载列表框还是什么的。答案取决于您的事件…我更新了我的答案以响应您的更新。那么,您的代码中还有其他错误。你是如何清除选择的?