我正在尝试将单元格设置为编辑模式。单元格在新行(NewRowIndex)中。在其他任何地方它都工作得很好,但是如果我尝试在NewRowIndex中设置编辑模式,它不会像预期的那样进入编辑模式。我只想让用户输入一个新行(NewRowIndex),第一个单元格进入编辑模式。我尝试过(在RowEnter上):
dgvList.CurrentCell = dgvList["myColName", dgvList.NewRowIndex]; dgvList.BeginEdit(true);
谢谢!
发布于 2012-10-27 10:14:06
我不认为你真的需要利用NewRowIndex
属性。只需通过设置当前单元格即可开始编辑:
private void dgvList_CellEnter(object sender, DataGridViewCellEventArgs e)
{
dgvList.CurrentCell = dgvList[e.ColumnIndex, e.RowIndex];
dgvList.BeginEdit(true);
}
如果希望单元格仅针对新行进入编辑模式,则:
private void dgvList_CellEnter(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex != dgvList.NewRowIndex)
return;
dgvList.CurrentCell = dgvList[e.ColumnIndex, e.RowIndex];
dgvList.BeginEdit(true);
}
编辑:如果您希望新行在键控时开始处于编辑模式,那么这是一个已经可用于datagridviews的特性。您可以像这样手动设置:
dgvList.EditMode = DataGridViewEditMode.EditOnKeystrokeOrF2;
//or
dgvList.EditMode = DataGridViewEditMode.EditOnKeystroke;
如果你只想让单元格在新行的键控时处于编辑模式,那么你将不得不通过钩住KeyDown
事件来覆盖默认行为,我认为这不是一个做图形用户界面的好方法。可能是这样的:
初始化:dgvList.EditMode = DataGridViewEditMode.EditOnF2; //or whatever you prefer
若要在击键时覆盖默认的excel样式编辑,请执行以下操作。然后
private void dgvList_KeyDown(object sender, KeyEventArgs e)
{
if (dgvList.CurrentCell.RowIndex != dgvList.NewRowIndex)
return;
dgvList.BeginEdit(true);
}
https://stackoverflow.com/questions/13098968
复制