Перейдите к новой строке в datagridview с помощью клавиши Enter в vb.net

Это мой код для нажатия клавиши Enter и перехода к следующей ячейке:

Private Sub dvFromAlloc_CellEndEdit(ByVal sender As Object, ByVal e As   System.Windows.Forms.DataGridViewCellEventArgs) Handles dvFromAlloc.CellEndEdit
    SendKeys.Send("{up}")
    SendKeys.Send("{right}")
End Sub

Private Sub dvFromAlloc_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles dvFromAlloc.KeyDown
    If e.KeyCode = Keys.Enter Then
        SendKeys.Send("{up}")
        SendKeys.Send("{right}")
    End If
End Sub

Это отлично работает, теперь я хочу, чтобы если пользователь был в последнем столбце, как я могу переместить ячейку в первый столбец второй строки?

Спасибо.


person Matthew    schedule 05.09.2013    source источник
comment
@matzone: Привет, сэр, не могли бы вы объяснить, как я могу использовать selectedcells, я не могу понять ваш комментарий, спасибо за помощь   -  person Matthew    schedule 05.09.2013
comment
Извините, это исправлено .. Я имею в виду dgv.CurrentCell .. вы пытаетесь установить currentrow +1 и column = 0 ..   -  person matzone    schedule 05.09.2013
comment
@matzone: в какой части я буду устанавливать текущую строку + 1, я должен поместить ее как в редактирование целленда, так и в нажатие клавиши?   -  person Matthew    schedule 05.09.2013


Ответы (2)


Вы можете попробовать это на своем KeyDown мероприятии ..

Private Sub dvFromAlloc_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles dvFromAlloc.KeyDown
    If e.KeyCode = Keys.Enter Then

        dvFromAlloc.CurrentCell = dvFromAlloc.Rows(dvFromAlloc.CurrentCell.RowIndex + 1).Cells(0)
        dtg.Rows(i).Cells(aColumn(x))
    End If
End Sub
person matzone    schedule 05.09.2013

Обработка ключа ввода в Datagridview в формах выигрыша.

bool notlastColumn = true;

    protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg, System.Windows.Forms.Keys keyData)
    {
        int icolumn = dataGridView1.CurrentCell.ColumnIndex;
        int irow = dataGridView1.CurrentCell.RowIndex;
        int i = irow;
        if (keyData == Keys.Enter)
        {
            if (icolumn == dataGridView1.Columns.Count - 1)
            {

                //dataGridView1.Rows.Add();
                if (notlastColumn == true  )
                {
                   dataGridView1.CurrentCell= dataGridView1.Rows[i].Cells[0];
                }
                dataGridView1.CurrentCell = dataGridView1[0, irow + 1];

            }
            else
            {
                dataGridView1.CurrentCell = dataGridView1[icolumn + 1, irow];
            }
            return true;
        }
        else
            return base.ProcessCmdKey(ref msg, keyData);
    }
person Nagarjun G N    schedule 16.01.2014