当用户按下键盘上的DEL按钮时,我想从dataGridView1中删除当前选定的行。
到目前为止,这是我的代码
// Remove selected row
private void DeleteRow()
{
try
{
dataGridView1.Rows.RemoveAt(dataGridView1.CurrentRow.Index);
MessageBox.Show("Row removed");
}
catch (Exception ex)
{
MessageBox.Show("row remove EX");
return;
}
}
// Event when user presses DEL button on keyboard
private void dataGridView1_RowsRemoved(object sender, DataGridViewRowsRemovedEventArgs e)
{
DeleteRow();
}
应用程序删除了行,但DeleteRow()
函数从未执行,因为我从未看到Row removed
消息。我错过了什么吗?
编辑:更新了代码
答案 0 :(得分:0)
从您发布的代码可见,您可以从RowsRemoved事件处理程序调用DeleteRow()。
但是在删除行之前,RowsRemoved不会执行。如果它将执行它将直接再次删除另一行 - 如果有一个或抛出异常。
请尝试:
var sampleDoc = new SrgsDocument(@"en-US-sample.grxml");
var g = new Grammar(sampleDoc);
engine.LoadGrammar(g);
尝试通过在DeleteRow()中设置调试断点来了解您编码的内容。目前您的应用程序类似于DeleteRow-> RowRemovedEventHandler-> DeleteRow
所以删除行的代码会被执行两次。