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

标签 c#

<分区>

我正在为我的学习开发一个应用程序。现在我刚刚启动了一个应用程序,其中我有一个包含足球联赛和俱乐部等的数据库。我的应用程序具有以下功能

  • 联盟的组合框。
  • 根据您从联赛中选择的俱乐部显示列表框。
  • 根据您从俱乐部中选择的内容显示球员的列表框。 现在我得到这个错误

    System.NullReferenceException: object reference not set to an instance of an object

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

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

标签是如何更新的:

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() 之前检查 listboxspelers.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);
    }
}

关于C# 程序崩溃,因为列表框项更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53764946/

相关文章:

c# - 尝试同步调用异步方法时出现死锁

c# - 使用 LINQ 将字符串转换为 int 以进行排序

c# - 如何创建一个可以返回非空值的异步方法?

c# - .net mvc select list handle on selected item event

c# - 如何识别用于调用 Azure Functions 的 HTTP 方法(动词)

c# - 我可以从具有多个轴的 oxyplot 图表中删除裁剪吗?

c# - 验证结果实践。 bool 值还是计数?

具有特定路径的 C# Path.GetTempFileName()

c# - 在所有类 List<Object> 中搜索匹配值

c# - 为什么这段代码会给出 "Possible null reference return"编译器警告?