如果你想首先和所有列始終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