Принудительно редактировать DataGridView в один столбец - PullRequest
0 голосов
/ 17 декабря 2010

Я хочу разрешить редактирование только одного столбца в моем DataGridView, но я хочу, чтобы пользователь мог дважды щелкнуть любой элемент в строке, и при срабатывании CellBeginEdit принудительно редактировать мой столб.Я начал с этого:

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 (False), потому что «операция недопустима, потому что она приводит к повторному входу в функцию BeginEdit»что, конечно, это будет делать, но это то, что я хочу.Есть ли другой способ сделать это?

Ответы [ 2 ]

1 голос
/ 17 декабря 2010

вместо обработки события CellBeginEdit, попробуйте сделать другие ячейки доступными только для чтения и обработать событие double click. В обработчике double click установите выбранную ячейку в редактируемую, а затем вызовите BeginEdit

0 голосов
/ 22 декабря 2010

В конце концов я нашел эту ссылку полезной и адаптировал ее для своих нужд:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...