在本身DataGrid中没有此类事件进行直接处理,你需要去接获传给DataGrid的消息,从而预先处理。
大致的方法是,编写一个类去继承DataGrid,然后重载PreProcessMessage 函数,具体代码如下。
public class comDataGrid:DataGrid
{
private const int WM_KEYDOWN = 0x100;
public override bool PreProcessMessage( ref Message msg )
{
// Get press key code
Keys keyCode = (Keys)(int)msg.WParam & Keys.KeyCode;
if( this.DataSource != null )
{
// Full row selected
if( this.IsSelected( this.CurrentCell.RowNumber ) )
{
// The key code is "Delete"
if(msg.Msg == WM_KEYDOWN && keyCode == Keys.Delete )
{
// Show confirmation info
if( MessageBox.Show("Delete this row?",
"",
MessageBoxButtons.YesNo) == DialogResult.No )
return true;
}
}
}
return base.PreProcessMessage(ref msg);
}
public comDataGrid():base(){}
}
然后只要把程序中所有的“DataGrid”替换成“comDataGrid”,其他代码保持不变就可以使用了。
本文介绍了一种在DataGrid中实现删除行前显示确认提示的方法。通过创建一个继承自DataGrid的类,并重载PreProcessMessage函数来捕获并处理键盘输入事件,当按下Delete键时会弹出确认对话框询问用户是否真的要删除当前选中的行。
565

被折叠的 条评论
为什么被折叠?



