C#程序崩溃,因为列表框项发生了更改

C#程序崩溃,因为列表框项发生了更改,c#,C#,我正在为我的学习开发一个应用程序。现在我刚刚启动了一个应用程序,在那里我得到了一个足球联盟和俱乐部等的数据库。我的应用程序有以下功能 联盟的组合框 列表框,显示基于您从联盟中选择的俱乐部 根据您从俱乐部中选择的球员显示的列表框。 现在我得到了这个错误 System.NullReferenceException:对象引用未设置为对象的实例 现在我知道了为什么会出现这个错误,因为如果我选择了一个播放器,它会向标签提供有关该播放器的一些信息。但如果在组合框中选择其他联赛或在列表框中选择其他俱乐部

我正在为我的学习开发一个应用程序。现在我刚刚启动了一个应用程序,在那里我得到了一个足球联盟和俱乐部等的数据库。我的应用程序有以下功能

  • 联盟的组合框
  • 列表框,显示基于您从联盟中选择的俱乐部
  • 根据您从俱乐部中选择的球员显示的列表框。 现在我得到了这个错误 System.NullReferenceException:对象引用未设置为对象的实例

现在我知道了为什么会出现这个错误,因为如果我选择了一个播放器,它会向标签提供有关该播放器的一些信息。但如果在组合框中选择其他联赛或在列表框中选择其他俱乐部,则会在球员列表框中更改选择,从而触发事件并尝试更新标签,但没有选择球员,因此会显示此错误

现在要纠正这个错误,我不知道我能做什么,所以如果我已经选择了一名球员并试图改变俱乐部或联赛,它不会触发事件

标签的更新方式:

private void Listboxspelers_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    //set player statistics
    lblpositie.Content = "Positie: " + db.GetPositie(listboxspelers.SelectedItem.ToString());
    lbldoelpunten.Content = "Aantal Doelpunten: " + db.GetDoelpunten(listboxspelers.SelectedItem.ToString());
    lblgelekaarten.Content = "Aantal GeleKaarten: " + db.GetGeleKaarten(listboxspelers.SelectedItem.ToString());
    lblRodeKaarten.Content = "Aantal RodeKaarten: " + db.GetRodeKaarten(listboxspelers.SelectedItem.ToString());
}

在调用
ToString()
之前,请检查
listboxspellers.SelectedItem
是否为
null
。您还应该只调用一次
ToString()
方法,因为您将相同的值传递给所有方法:

private void Listboxspelers_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    //set player statistics
    if (listboxspelers != null && listboxspelers.SelectedItem != null)
    {
        string selectedItem = listboxspelers.SelectedItem.ToString();
        lblpositie.Content = "Positie: " + db.GetPositie(selectedItem);
        lbldoelpunten.Content = "Aantal Doelpunten: " + db.GetDoelpunten(selectedItem);
        lblgelekaarten.Content = "Aantal GeleKaarten: " + db.GetGeleKaarten(selectedItem);
        lblRodeKaarten.Content = "Aantal RodeKaarten: " + db.GetRodeKaarten(selectedItem);
    }
}
试试这个:

private void Listboxspelers_SelectionChanged(object sender, SelectionChangedEventArgs e){
    if(listboxspelers.SelectedItem != null){
        lblpositie.Content = "Positie: " + db.GetPositie(listboxspelers.SelectedItem.ToString());
        lbldoelpunten.Content = "Aantal Doelpunten: " + db.GetDoelpunten(listboxspelers.SelectedItem.ToString());
        lblgelekaarten.Content = "Aantal GeleKaarten: " + db.GetGeleKaarten(listboxspelers.SelectedItem.ToString());
        lblRodeKaarten.Content = "Aantal RodeKaarten: " + db.GetRodeKaarten(listboxspelers.SelectedItem.ToString());
    }
}

检查
listboxspellers.SelectedItem
是否为
null