在我的电子表格程序中,我目前具有当用户按下单元格上的删除键时的功能,它将单元格的值设置为空字符串;但是,当用户在编辑单元格时按下删除时,删除键的默认功能不起作用。我当前对delete键的实现如下:
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.
}
}
对于我的其他声明,有没有办法在编辑单元格时启用删除键的默认功能?
答案 0 :(得分:1)
试试这个,它按预期工作。
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 = "";
}
}
}
答案 1 :(得分:0)
我一直在追踪这个问题好几个小时。在这个继承的表单项目中,我终于找到了窃取我的删除密钥的东西。删除键已分配给我从未使用过的上下文菜单项。这样可以防止在编辑单元格时执行默认操作(删除单个字符)。
对于以后查看此帖子的个人,在整个
的搜索解决方案范围内(尽管可能在表单的Designer.cs文件中).ShortcutKeys = System.Windows.Forms.Keys.Delete;
将有助于查找已窃取您的删除密钥的有问题的物品。