手动移动到 DataGridView 中的下一个单元格?

Manually move to next cell in DataGridView?

我有一个 DataGridView 和 2 个可编辑的单元格。第一个单元格使用自定义控件,第二个单元格是标准文本框。

自定义控件有一个 ItemChanged 事件,当用户在控件中输入值时会引发此事件。

如何订阅此活动以及如何移动到下一个可编辑单元格?

根据this answer

private void customControl_ItemChanged(object sender, KeyEventArgs e)
    {
            int iColumn = dataGridView1.CurrentCell.ColumnIndex;
            int iRow = dataGridView1.CurrentCell.RowIndex;
            if (iColumn == dataGridView1.Columns.Count-1)
                dataGridView1.CurrentCell = dataGridView1[0, iRow + 1];
            else
                dataGridView1.CurrentCell = dataGridView1[iColumn + 1, iRow];
    }

如果您不能通过设计器 link 事件,您还需要在 FormName.Designer.cs 中的 InitializeComponent() 方法中添加一行,例如:

this.customControl.ItemChanged += new System.EventHandler(this.customControl_ItemChanged);

您可以使用 e.ControlDataGridViewEditingControlShowing 事件中访问自定义控件。这里有一个 DataGridViewTextBoxCell 的例子:

private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
    if (e.Control is TextBox)
    {
        ((TextBox)e.Control).TextChanged += TextBoxCell_TextChanged;
    }
}