在 C# 中更改 dataGridView 单元格的焦点

Change Focus of dataGridView cell in C#

我在 c# 中有用于输入采购订单的 dataGridview。当我在选择 ItemId 后按 Enter 键时,我想将单元格 Focus 从 ItemId 更改为 NoofQty。然后再次按 Enter 键转到下一行 ItemId.

哪个dataGridview事件适合这个?你能请任何人帮助我.. 我已尽我所能尝试如下

  private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
    {
        try
        {
            if(e.ColumnIndex==0)// ItemId
            {
                dataGridView1.Rows[e.RowIndex].Cells[4].Selected= true;
                dataGridView1.Rows[e.RowIndex].Cells[4].Value="1";
                //I want to edit this cell value
            }
            else if (e.ColumnIndex == 4)// ItemId
            {
                //goto next row and cell is ItemId
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

试试这个:

DataGridViewRow selectedRow = myGridView.Rows[rowToSelect];
selectedRow.Selected = true;
selectedRow.Cells[columnToSelect].Selected = true;

myGridView.CurrentCell = myGridView.Rows[index].Cells[4];
myGridView.BeginEdit(true);
 private void Form1_Load(object sender, EventArgs e)
    {
        DataGridViewComboBoxColumn cmb = (DataGridViewComboBoxColumn)dataGridView1.Columns[0];          
        cmb.Name = "cmb";
        cmb.MaxDropDownItems = 4;
        int no = 1001;
        for (int i = 0; i < 100; i++)
        {
            no++;
            cmb.Items.Add(no.ToString());
        }            
        dataGridView1.RefreshEdit();
        dataGridView1.Rows.Add();

    }

    private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
    {
        try
        {
            if(e.ColumnIndex==0)// ItemId
            {

                dataGridView1.CurrentCell = dataGridView1.Rows[e.RowIndex].Cells[4];
                dataGridView1.CurrentCell.Value = "1";
                dataGridView1.BeginEdit(true);                    
            }
            else if (e.ColumnIndex == 4)// NoofQty
            {
                dataGridView1.Rows.Add();
                dataGridView1.CurrentCell = dataGridView1.Rows[e.RowIndex+1].Cells[0];
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

根据@Pranav-BitWiser 指导,此代码工作正常...