如果你想首先和所有列始终datagridview
可见,然后用
DataGridView.AutoSizeColumnMode = Fill
将会自动改变中间立柱当然宽度...
还是这里的一些其他解决方法你的问题:
在你的DataGridView
创建一个带有按钮(“左按钮”)的第一列并冻结它。
然后在右侧从主DataGridView
创建另一个DataGridView
(将其称为dgvRightButton
)
添加一个DatGridViewButtonColumn
。然后同步的这两datagridview
VB.NET代码
Private Sub dgvTest1_Scroll(sender As Object, e As ScrollEventArgs) Handles dgvMain.Scroll
If e.ScrollOrientation = ScrollOrientation.VerticalScroll Then
Me.dgvRightButton.FirstDisplayedScrollingRowIndex = Me.dgvMain.FirstDisplayedScrollingRowIndex
End If
End Sub
测试代码,我用第二datagridview
滚动事件(还是VB.NET代码,但注释是C#):
//dgvRightButton_ButtonColumn - Buttons column instance(predefined column with Designer)
//dgvMain_SomeValueColumn - predefined column from Main DataGridView
Private Sub dgvRightButton_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvLeftButton.CellClick
//Check if column are buttons column(maybe you want add more columns later)
If Me.dgvRightButton_ButtonColumn.Name = Me.dgvRightButton.Columns(e.ColumnIndex).Name Then
//Getting value from Main DataGridView by rowIndex
Dim sValue As String = Me.dgvMain.Rows(e.RowIndex).Cells(Me.dgvMain_SomeValueColumn.Name).Value
MessageBox.Show(sValue)
End If
End Sub
添加按钮的同样数量的第二DataGridView
将是如下:
Private Sub dgvRightButton_AddRows()
For i As Int32 = 0 To Me.dgvTest1.Rows.Count - 1
Me.dgvRightButton.Rows.Add(New String() {"Right"})
Next
End Sub
谢谢法比奥。我也想出了第二个DataGridView的这种方法并实现它。我将在下面添加一个答案来添加一些细节。不幸的是,我是新来的StackOverflow,我的名声太低,以促进你的答案,否则我会这么做。 – Jim 2013-03-27 17:05:59