您的位置:首页 > 其它

关于DataGride的Key事件

2004-02-20 15:39 609 查看
由于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
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: