我最近发现Visual Basic存在问题,因为它处理DataGridView(DGV)的enabling/disabling
,它被数据绑定到List
个对象。
我正在开发的这个程序使用的DGV在程序执行时以编程方式填充信息。在程序的某些点上,这些DGV被启用和禁用。
我最近添加了一个数据绑定到对象列表的DGV。有了这个新的DGV,我试图通过基本上在与其他DGV相同的条件下启用和禁用其他DGV来模仿其他DGV的状态。只要新的DGV以任何方式与之交互,就会引起异常,并且特别难以调试。
在某些条件下,新的DGV 未启用/禁用,并且这些异常未被提升。最终,这就是我发现启用/禁用DGV导致例外的原因。
我目前决定不打扰启用/禁用DGV,但我想知道是否有人知道为什么这会发生?
如果有人感兴趣,使用以下代码行禁用/启用DGV:
newDataGridView.enabled = false
'and
newDataGridView.enabled = true
有问题的DGV在标签控件上,最初隐藏有问题的DGV。
如果禁用DGV,则不会引发任何异常。但是,用户当然无法与DGV进行交互,这本身就是一个问题。
但是,如果将标签控件切换到DGV,则会出现问题,然后启用DGV然后单击(在任何位置)。如果在启用DGV时切换选项卡,则会立即发生异常。
除了表示源代码在代码之外的一行之外,异常将显示没有堆栈跟踪。
我在所有事件处理程序中都放置了断点,但没有一个被调用。此时,没有调用事件处理程序。在所有其他场景中,每个事件处理程序都能正常工
一旦我停止改变DGV的启用状态,就会停止发生此异常的所有实例。