设计器分配 DataGridViewColumn HeaderText 时出现 NullReferenceException
NullReferenceException when Designer assigns DataGridViewColumn HeaderText
编辑:找到解决方案。 DataGridViewColumn HeaderText 单元格定义为 DataGridView 中的一行。当它们发生变化时,它会调用一个 DataGridView.CellValueChanged
事件。
所以我不知道是什么导致了这个问题。我生成的设计器代码每次设置列的 HeaderText 时都会抛出 NullReferenceException。这些列是在 DataGridView 属性中创建的。但是,当我进行快速尝试以查看 HeaderText 是什么时,名称是正确的。这是 HeaderText 分配之一:
this.lightType.HeaderText = "Type";
这是一个快速代码,我在其中验证了 HeaderText 在分配后是否正确(我没有将其保留在 Designer 代码中;只是为了调试)。
try
{
this.lightType.HeaderText = "Type";
}
catch(NullReferenceException e)
{
MessageBox.Show(e.Message);
MessageBox.Show(lightType.HeaderText);
}
MessageBox 和调试器都在赋值后直接显示正确的名称,但赋值仍然抛出 NullReferenceException。
有什么想法吗?
显然,列名称被定义为 DataGridView 的一行,因此当名称更改时,将调用 DataGridView.CellValueChanged
事件,我的代码中有一个函数调用了未声明的值.
编辑:找到解决方案。 DataGridViewColumn HeaderText 单元格定义为 DataGridView 中的一行。当它们发生变化时,它会调用一个 DataGridView.CellValueChanged
事件。
所以我不知道是什么导致了这个问题。我生成的设计器代码每次设置列的 HeaderText 时都会抛出 NullReferenceException。这些列是在 DataGridView 属性中创建的。但是,当我进行快速尝试以查看 HeaderText 是什么时,名称是正确的。这是 HeaderText 分配之一:
this.lightType.HeaderText = "Type";
这是一个快速代码,我在其中验证了 HeaderText 在分配后是否正确(我没有将其保留在 Designer 代码中;只是为了调试)。
try
{
this.lightType.HeaderText = "Type";
}
catch(NullReferenceException e)
{
MessageBox.Show(e.Message);
MessageBox.Show(lightType.HeaderText);
}
MessageBox 和调试器都在赋值后直接显示正确的名称,但赋值仍然抛出 NullReferenceException。
有什么想法吗?
显然,列名称被定义为 DataGridView 的一行,因此当名称更改时,将调用 DataGridView.CellValueChanged
事件,我的代码中有一个函数调用了未声明的值.