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# - 除了创建助手之外,创建静态方法的理想情况(现实生活中的例子)是什么?

c# - 使用 VisualStateManager 启动和停止 Storyboard

c# - 文字换行以适合一定比例(不是大小)的矩形

c# - 使用 FormatConvertedBitmap 从 Pbgra32 转换为 Bgr32 PixelFormats

c# - Nancyfx Request.Session 不持有 AJAX 帖子的值

具有返回不同类型的子项的抽象类中的 C# 抽象方法

c# - C#应用程序:从音频输出采样音频-> FFT算法->可视化

c# - 调整位图图像大小

c# - XNA 随机选择的纹理总是选择相同的纹理