在绑定数据源后增加如下指令:
Me.DataGridView1.AutoGenerateColumns = False
这样,添加的按钮列的列索引就确保不会变为0,而是放到数据列的最后一列。在绑定数据源之前,则要将AutoGenerateColumns设置为True:
Me.DataGridView1.AutoGenerateColumns = True ‘打开自动产生列开关,这样导入数据时,才会自动产生列
Me.DataGridView1.Columns.Clear()
Me.DataGridView1.DataSource = Nothing
Me.DataGridView1.DataSource = MyTable '导入数据源
Me.DataGridView1.AutoGenerateColumns = False '关闭自动产生列开关,这样后面添加的按钮列的索引才会排到最后,否则可能会插到最前
Dim btnEdit1 As New DataGridViewButtonColumn() ‘定义按钮列
btnEdit1.Name = "btnEdit1"
btnEdit1.HeaderText = "刷新"
btnEdit1.Text = "刷新"
btnEdit1.Width = 50
btnEdit1.UseColumnTextForButtonValue = True
DataGridView1.Columns.Insert(DataGridView1.ColumnCount, btnEdit1) '最后列添加按钮列
通过上述的设置,每次更改数据源(相同列数)并添加按钮列后,DataGridView的列索引不变,单元格事件才会确保响应一致。