在 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 指导,此代码工作正常...
我在 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 指导,此代码工作正常...