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 datagridview列宽已更改_Vb.net_Datagridview_Column Width - Fatal编程技术网

Vb.net datagridview列宽已更改

Vb.net datagridview列宽已更改,vb.net,datagridview,column-width,Vb.net,Datagridview,Column Width,我有2个datagridview。我想在用鼠标更改另一个datagridview的一列宽度时更改datagridview的一列宽度。 我试过这个代码,但不起作用 Private Sub DataGridView1_ColumnMinimumWidthChanged(sender As Object, e As System.Windows.Forms.DataGridViewColumnEventArgs) Handles DataGridView1.ColumnMinimumWidthChan

我有2个datagridview。我想在用鼠标更改另一个datagridview的一列宽度时更改datagridview的一列宽度。 我试过这个代码,但不起作用

Private Sub DataGridView1_ColumnMinimumWidthChanged(sender As Object, e As System.Windows.Forms.DataGridViewColumnEventArgs) Handles DataGridView1.ColumnMinimumWidthChanged
    HeaderGrid.Columns(e.Column.Index).Width = e.Column.Width
End Sub
我通过添加mouseleave事件编辑了我的代码,它工作正常,但不正常

 Private Sub DataGridView1_MouseLeave(sender As Object, e As System.EventArgs) Handles DataGridView1.MouseLeave
    Dim c As DataGridViewColumn = DataGridView1.Columns(DataGridView1.CurrentCell.ColumnIndex)
    Dim h As DataGridViewColumn = HeaderGrid.Columns(DataGridView1.CurrentCell.ColumnIndex)
    h.Width = c.Width
End Sub

使用
DataGridView1.ColumnWidthChanged
事件而不是
ColumnMinimumWidthChanged
捕获
宽度的更改

Private Sub DataGridView1_ColumnWidthChanged(sender As Object,
                                             e As DataGridViewColumnEventArgs) Handles DataGridView1.ColumnWidthChanged
    HeaderGrid.Columns(e.Column.Index).Width = e.Column.Width
End Sub

我通过使用另一个事件解决了此问题:

   Private Sub DataGridView1_CellMouseLeave(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellMouseLeave
    If e.ColumnIndex <> -1 And HeaderGrid.ColumnCount <> 0 Then
        Dim c As DataGridViewColumn = DataGridView1.Columns(e.ColumnIndex)
        Dim h As DataGridViewColumn = HeaderGrid.Columns(e.ColumnIndex)
        h.Width = c.Width
    End If
End Sub
Private子DataGridView1\u CellMouseLeave(发送者作为对象,e作为System.Windows.Forms.DataGridViewCellEventArgs)处理DataGridView1.CellMouseLeave
如果e.ColumnIndex为-1,HeaderGrid.ColumnCount为0,则
尺寸c为DataGridViewColumn=DataGridView1.Columns(e.ColumnIndex)
尺寸h为DataGridViewColumn=HeaderGrid.Columns(e.ColumnIndex)
h、 宽度=c.宽度
如果结束
端接头

谢谢@fabio。我尝试了你的解决方案,但发现错误指数超出范围。必须为非负数且小于集合的大小。参数名称:index…事实上y headergrid被用作第二个DataGridViews的过滤器。我通过添加一个屏幕截图编辑了我的文章,代码被更改了。