如何在数据网格视图的编辑模式下使用删除键的默认功能

本文关键字:删除 功能 默认 模式 编辑 数据 数据网 视图 网格 | 更新日期: 2023-09-27 18:30:59

在我的电子表格程序中,我目前具有当用户在单元格上按删除键时,它将单元格的值设置为空字符串的功能;但是,当用户在编辑单元格时按删除时,删除键的默认功能不起作用。我目前对删除键的实现如下:

private void deleteToolStripMenuItem_Click(object sender, EventArgs e)
{
    if (false == dataGridView1.CurrentCell.IsInEditMode)
    {
        foreach (DataGridViewCell selected_cell in dataGridView1.SelectedCells)
        {
            Cell change_cell = _workbook.CurrentSpreadsheet.GetCell(selected_cell.RowIndex, selected_cell.ColumnIndex);
            // The text is not null nor empty
            if (false == string.IsNullOrEmpty(change_cell.Text))
            {
                change_cell.Text = "";
            }
        }
    }
    // The user is editing a cell 
    else
    {
        // When the user presses delete, use the default functionality
        // as in remove one character each press. 
    }
}

对于我的 else 语句,有没有办法在编辑单元格时启用删除键的默认功能?

如何在数据网格视图的编辑模式下使用删除键的默认功能

试试这个,它正在按预期工作。

private void deleteToolStripMenuItem_Click(object sender, EventArgs e)
{
    DeleteCellsIfNotInEditMode();
}
private void dataGridView1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Delete)
    {
        DeleteCellsIfNotInEditMode();
    }
}
private void DeleteCellsIfNotInEditMode()
{
    if (!dataGridView1.CurrentCell.IsInEditMode)
    {
        foreach (DataGridViewCell selected_cell in dataGridView1.SelectedCells)
        {
            selected_cell.Value = "";
        }
    }
}
我一直

在追逐这个问题。在我继承的这个表单项目中,我终于找到了窃取我的删除密钥的内容。删除键已分配给我从未使用过的上下文菜单项。这会阻止在编辑单元格时执行默认操作(删除单个字符)。

对于将来查看此帖子的个人,可以在解决方案范围内(尽管可能在窗体的设计器.cs文件中)进行搜索

.ShortcutKeys = System.Windows.Forms.Keys.Delete;

将有助于找到窃取您的删除密钥的违规项目。