关于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
}
}
。这里只简单的实现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
}
}
相关文章推荐
- You'll never shut down the real Napster.
- 你买火车票了没有
- 计算机属于人民
- 何谓协同软件?
- 使用FindFirstFile和FindNextFile查找某个目录下的所有文件(包括子目录)
- InstallShield 6.2 创建卸载快捷方式
- 如何在VC6或者VC7下用 ATL做一个OpenGL的(COM)控件?
- OpenGL 下的文字显示
- VC开发数据库基础之ADO篇 (1)
- VC开发数据库基础之ADO篇 (2)
- 用Visual C++操作INI文件
- Excel下实现贪吃蛇小游戏
- 用VB将剪切板中的图片保存为JPG文件
- 在Delphi中使用指针参数
- Crystal 10 家族官方产品文档资源
- 常见 Datagrid 错误
- struts中使用form标记
- VB程序打印水晶报表的典型方法2
- php.ini 的必读配置中文文档
- singleton设计模式的C#实现(上)