Vb.net 在';对于';环
我在表单加载事件中看到一些奇怪的行为。在我运行Vb.net 在';对于';环,vb.net,datagridview,Vb.net,Datagridview,我在表单加载事件中看到一些奇怪的行为。在我运行For循环之前,一切都按预期工作。下一行下的任何代码都不会触发。我没有收到任何错误,表单只是加载了所有好的东西,但它忽略了这些行。我在循环的上方和下方放置了一个msgbox(“test”),以确认此行为 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 'Do some form loading stuff msgbox("te
For
循环之前,一切都按预期工作。下一行
下的任何代码都不会触发。我没有收到任何错误,表单只是加载了所有好的东西,但它忽略了这些行。我在循环的上方和下方放置了一个msgbox(“test”)
,以确认此行为
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'Do some form loading stuff
msgbox("test1") 'This will Fire
For i = 0 To DataGridView1.Columns.Count
DataGridView1.Columns(i).SortMode = DataGridViewColumnSortMode.NotSortable
Next
msgbox("test2") 'This wont fire
End Sub
我可以通过将循环放在表单加载的底部来解决这个问题,但是我不明白为什么会发生这种情况
编辑:在进一步测试之后,我发现如果我只是运行FOR循环而不改变排序模式,那么test2消息框就会启动。如果我把sortmode行注释掉,一切正常。在循环中设置排序模式会阻止其余代码运行
另外,如果有人知道一种更好的方法,使带有额外列的databound datagridview无法排序,我洗耳恭听。问题是循环执行得太频繁了 NET中的数组从索引0开始,最大索引是数组的长度减1
For i = 0 To DataGridView1.Columns.Count - 1
DataGridView1.Columns(i).SortMode = DataGridViewColumnSortMode.NotSortable
Next
您的循环导致异常,该异常可能被捕获在调用方代码中并被静默抑制,或者,在load方法中,如果您在VS debugger中执行此代码,则在64位代码中的load事件附加了调试器的情况下,无法捕获该异常。问题在于循环执行次数过多 NET中的数组从索引0开始,最大索引是数组的长度减1
For i = 0 To DataGridView1.Columns.Count - 1
DataGridView1.Columns(i).SortMode = DataGridViewColumnSortMode.NotSortable
Next
您的循环导致异常,该异常可能被捕获在调用方代码中并被静默抑制,或者,在load方法中,如果您在VS debugger中执行该代码,如果加载事件为64位代码,并且附加了调试器,则无法捕获该事件。代码中有一个错误:在DataGridView1.Columns.Count之前无法枚举 像这样修复它:
For i = 0 To DataGridView1.Columns.Count -1
DataGridView1.Columns(i).SortMode = DataGridViewColumnSortMode.NotSortable
Next
顺便说一句,您没有看到MsgBox,因为DataGridView1.Columns(i)将引发异常,但如果此异常位于
Load
方法中,则该异常将被忽略。您的代码中有一个错误:只有DataGridView1.Columns.Count才能枚举
像这样修复它:
For i = 0 To DataGridView1.Columns.Count -1
DataGridView1.Columns(i).SortMode = DataGridViewColumnSortMode.NotSortable
Next
顺便说一句,您没有看到MsgBox,因为DataGridView1.Columns(i)将引发一个异常,但是如果在Load
方法中,这个异常将被忽略。您的for循环应该是“对于DataGridView1.Columns.Count-1,i=0”我很确定您有一个未被捕获的异常。您的for循环应该是“对于DataGridView1.Columns.Count-1的i=0”我很确定您遇到了一个未被捕获的异常。