【问题标题】:c# error Object reference not set to an instance of an object [duplicate]c#错误对象引用未设置为对象的实例[重复]
【发布时间】:2016-05-16 18:14:27
【问题描述】:

我有一个带有数据网格和图表的窗口。数据网格有 5 行数据,图表根据所选行绘制该行的数据。现在它只绘制第一行,当我选择不同的行时不会更新图表。这段代码在一个名为 ShellViewModel.cs 的类中:

public void EditLoadForecastViewModel()
{
    Shell sh;
    Timer timer = new Timer(500);
    timer.Elapsed += new ElapsedEventHandler((s, e) =>
    {
        if (updateGraph)
        {
            sh.Dispatcher.BeginInvoke(new Action(() => UpdateLoadChart()), null);
            updateGraph = false;
        }
    });
    timer.Start()
}

这个函数在一个名为 Shell.xaml 的窗口中调用,像这样

private void btnResults_Click(object sender, RoutedEventArgs e)
{
    vm.ReadLoadForecastFile(false,false);
    vm.EditLoadForecastViewModel();
}

当按下按钮时,我收到指向此行的错误:

sh.Dispatcher.BeginInvoke(new Action(() => UpdateLoadChart()), null);

错误信息是

用户代码未处理 NullReferenceException:对象引用未设置为对象的实例

【问题讨论】:

  • Shell sh 从未被分配
  • 当您在btnResults_Click 的开头放置一个断点并将鼠标悬停在vm 上时调试器在运行时遇到断点时,您看到了什么?当您在if (updateGraph) 之后立即放置一个断点并将鼠标悬停在sh 上时,当调试器在运行时遇到断点时,您看到了什么?
  • 你必须像Shell sh = new Shell();一样实例化sh

标签: c# .net wpf xaml datagrid


【解决方案1】:

实例化 Shell 对象 sh 的新实例。

Shell sh = new Shell();

【讨论】:

    猜你喜欢
    • 2013-07-07
    • 2013-11-28
    • 2023-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    • 1970-01-01
    相关资源
    最近更新 更多