dgv 属性更改时的 NullReferenceException

NullReferenceException on dgv property changes

提问人:Steven de Beer 提问时间:5/3/2018 更新时间:5/3/2018 访问量:220

问:

我可以解决这个问题,但想指出发生这种情况的位置和原因

众所周知,这是一个 .NET 异常,表示在对象具有值之前对对象进行了引用。但是,如果可以将其他属性分配给同一对象,为什么会发生这种情况呢?NullReferenceException

我的例子如下:

'before this line, I create and populate a datatable (dt)
With dgvWMStockList
    'assign the datasource to the dgv
    .DataSource = dt
    'configure its settings
    .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells
    .Columns("Description").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
    'NullReferenceException gets thrown next
    .Columns("Description").MinimumWidth = 200
End With

在调试期间,我收到错误,然后 1 秒后,我可以继续而不编辑代码。这表示引用是从代码外部设置的,或者是从另一个线程设置的。

请注意,将调用移到子句之外并不能解决问题。.MinimumWidthWith

堆栈指示:

   at System.Windows.Forms.DataGridViewBand.set_Thickness(Int32 value)
   at System.Windows.Forms.DataGridViewBand.set_MinimumThickness(Int32 value)

有人能阐明一些信息吗?

vb.net visual-studio-2015 datagridview nullreferenceexception

评论

0赞 Steve 5/3/2018
在开始调试之前,您是否“清理解决方案”和“重建解决方案”?
0赞 Steven de Beer 5/3/2018
我总是这样做。我的 vs 设置为每次开始调试时都这样做。即使手动执行此操作,它也不会通过那里。
0赞 Poat 5/4/2018
当您将鼠标悬停在所有对象上时。哪一个说“什么都没有”?
0赞 JohnG 5/4/2018
我猜 null 异常来自其他原因。我不会争辩说您可能会遇到“异常”,但我认为它不是来自您发布的代码。这假定您已经提供了所有相关信息。这个代码叫“哪里”?您是否尝试过将其减少到少量代码,以便其他人可以轻松重现该问题?我使用发布的代码进行测试按预期工作,没有错误。
0赞 Steven de Beer 5/4/2018
正如我在帖子中提到的。继续单步执行代码会传递异常。它在被击中时为空,但可能只有几毫秒。

答: 暂无答案