我正在为我的研究开发应用程序。现在,我刚刚启动了一个应用程序,在该应用程序中,我获得了足球联赛和俱乐部等数据库。我的应用程序具有以下功能
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());
}
答案 0 :(得分:3)
在致电listboxspelers.SelectedItem
之前,请检查null
是否不是ToString()
。您还应该一次调用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);
}
}
答案 1 :(得分:0)
尝试一下:
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());
}
}