Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 在';对于';环_Vb.net_Datagridview - Fatal编程技术网

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”我很确定您遇到了一个未被捕获的异常。