c# - datagridview 自动在新行上开始编辑

标签 c# datagridview editmode newrow

我正在尝试将单元格设置为编辑模式。该单元格位于新行 (NewRowIndex) 中。在其他地方它工作得很好,但是如果我尝试在 NewRowIndex 中设置编辑模式,它不会按预期进入编辑模式。我只是希望如果用户输入新行(NewRowIndex),第一个单元格进入编辑模式。我已经尝试过(在 RowEnter 上):

dgvList.CurrentCell = dgvList["myColName", dgvList.NewRowIndex]; dgvList.BeginEdit(true);

谢谢!

最佳答案

我认为您确实不需要使用 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;

如果您希望单元格在按键时仅针对新行处于编辑模式,那么您必须通过 Hook KeyDown 事件来覆盖默认行为,我认为这是一个不好的方法做图形用户界面。可能是这样的:

初始化:dgvList.EditMode = DataGridViewEditMode.EditOnF2;//或者你喜欢的任何内容

覆盖击键时默认的 Excel 样式编辑。然后

private void dgvList_KeyDown(object sender, KeyEventArgs e)
{
    if (dgvList.CurrentCell.RowIndex != dgvList.NewRowIndex)
        return;

    dgvList.BeginEdit(true);
}

关于c# - datagridview 自动在新行上开始编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13098968/

相关文章:

javascript - 如何在 Firefox 中自动聚焦 RTE 编辑器?

c# - ComboBoxCell 中的自定义绘制项

powershell - 无法为 DataGridView 中的特定行着色

asp.net - 将 ASP.Net DetailsView 置于编辑模式和更新模式

c# - 将 wcf 与 json 和 ajax 一起使用时出现 405 错误

c# - 选择最后一行时 Datagridview SelectedRows.Count 始终为零

c# - 使用 asp.net c# 读取上传的 .csv 文件

c# - 在.NET中,是否可以使用反射获取一个类的所有非继承方法?

c# DataGridViewComboBoxColumn selectedValue 分布在整行