关于DataGride的Key事件
由于DataGride的外观是由Style来实现的所以没有办法捕获到DataGride的键盘和鼠标的相关事件。如果通过重写ColumeSytle来实现就太麻烦了。其实通过System.Windows.Forms.IMessageFilter来实现就很简单了。这里只简单的实现Key_Down事件,其他的都差不多,所以不在这占地方了。
/////============================
using System;
using System.Windows.Forms;
namespace 文件读写
{
/// <summary>
/// ExtendDataGrid 的摘要说明。
/// </summary>
public class ExtendDataGrid:System.Windows.Forms.DataGrid,System.Windows.Forms.IMessageFilter
{
public ExtendDataGrid()
{
//添加消息筛选器以便在向目标传送 Windows 消息时监视这些消息
Application.AddMessageFilter(this);
//
// TODO: 在此处添加构造函数逻辑
//
}
#region IMessageFilter 成员
public bool PreFilterMessage(ref Message m)
{
// TODO: 添加 ExtendDataGrid.PreFilterMessage 实现
if ((int)m.Msg==(int)Win32.Msgs.WM_KEYDOWN)
{
System.Windows.Forms.Keys k=(System.Windows.Forms.Keys)(int)m.WParam ;
KeyEventArgs e = new KeyEventArgs(k);
OnKeyDown(e);
Console.WriteLine("Key is Pressed downd");
}
return false;
}
protected override void OnKeyDown(KeyEventArgs e)
{
base.OnKeyDown (e);
}
#endregion
}
}