2010-12-17 45 views
-1

我想只允許編輯DataGridView中的一列,但我想讓用戶雙擊該行中的任何項目,當CellBeginEdit觸發時,強制編輯我的科拉姆。我開始這樣做:在DataGridView上強制編輯爲一列

Private Sub dgvCaptions_CellBeginEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellCancelEventArgs) Handles dgvCaptions.CellBeginEdit 
     If e.ColumnIndex <> COL_CAPTION Then 
      e.Cancel = True 
      dgvCaptions.ClearSelection() 
      dgvCaptions.Rows(e.RowIndex).Cells(COL_CAPTION).Selected = True 
      dgvCaptions.BeginEdit(False) 
     End If 
    End Sub 

但因爲這會引發錯誤的BeginEdit(假)線「操作是無效的,因爲它會導致重入調用BeginEdit功能。」這當然會做,但這是我想要的。有沒有另一種方法來做到這一點?

回答

0

在我發現這個鏈接是有用的結束,將它改編爲我的需求:

Delegate Sub SetColumnIndex(ByVal i As Integer) 

    Private Sub dataGridView1_CellEndEdit(ByVal sender As Object, ByVal e As DataGridViewCellEventArgs) 
     If Me.dataGridView1.CurrentCell.ColumnIndex <> Me.dataGridView1.Columns.Count - 1 Then 
      Dim nextindex As Integer = Math.Min(Me.dataGridView1.Columns.Count - 1, Me.dataGridView1.CurrentCell.ColumnIndex + 1) 
      Dim method As New SetColumnIndex(AddressOf Mymethod) 
      Me.dataGridView1.BeginInvoke(method, nextindex) 
     End If 
    End Sub 

    Private Sub Mymethod(ByVal columnIndex As Integer) 
     Me.dataGridView1.CurrentCell = Me.dataGridView1.CurrentRow.Cells(columnIndex) 
     Me.dataGridView1.BeginEdit(True) 
    End Sub 

MSDN Forum Credit

1

而不是處理CellBeginEdit事件,嘗試通過使其他單元只讀並處理double click事件。在double click處理組選定單元您可編輯的單元格,然後調用BeginEdit

+0

我不只是想雙擊編輯,我希望用戶按下F2或雙擊該行中的任何項目,這將允許他們只編輯該行中的一列 – 2010-12-17 11:32:54