gpt4 book ai didi

c# - 即使对象不为 null 也会发生 NullReference 异常

转载 作者:太空狗 更新时间:2023-10-30 00:54:31 25 4
gpt4 key购买 nike

我是wpf的新手;我正在使用可编辑的组合框(用于搜索目的)。

当 ComboBox 中的文本发生变化时,搜索结果显示在数据网格下方。选择数据网格中的任何行时,其值将显示在文本框中以供编辑。

当我在组合框中写东西时,相关的行显示在数据网格中,但是当我单击选择一行时,应用程序抛出一个nullreference exception

当 dataGrid 刷新逻辑在单击按钮后进行时,我的应用程序正常工作。

dataGrid 的“SelectionChange”事件的代码是:

private void CategoryRowSelected(object sender, System.Windows.Controls.SelectedCellsChangedEventArgs e)
{
ClearForm();

if(CategoryDataGrid.SelectedItem!=null)
{
categoryMember = CategoryDataGrid.SelectedItem as CategoryTbl; // value assigned to the object
// if (categoryMember != null)
CategoryName.Text = categoryMember.CategoryName; //Exception thrown on this statement
CategoryDescription.Text = categoryMember.CategoryDescription;
}
}

ComboBox 的 textChange 事件的代码是:

private void RefreshDataGrid(object sender, System.Windows.Controls.TextChangedEventArgs e)
{
CategoryDataGrid.SelectedIndex = -1;
//CategoryDataGrid.ItemsSource = RefreshQuery;
CategoryDataGrid.ItemsSource= Admin.RefreshCategoryDataGrid(NameCombo.Text);
}

最佳答案

 CategoryName.Text = categoryMember.CategoryName; //Exception thrown on this statement

发生这种情况的原因有多种 - 不仅仅是因为 categoryMember 为 null。如果出现以下情况也会发生:

  • categoryMember.CategoryName(CategoryName 属性本身)返回 null,作为 TextBox.Text如果您将该值设置为 null,则类似的属性会引发异常。
  • CategoryName(控件)为 null

此外,我看到您有一个 null 检查(用于调试?),但它被注释掉了。如果 CategoryDataGrid.SelectedItem 不可分配给 CategoryTbl,您将在 categoryMember 本身中收到 null。

关于c# - 即使对象不为 null 也会发生 NullReference 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12589352/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com