我用.net 2003开发smartphone程序,但是里面的TreeView 控件没有KeyDown事件。
请问如何添加?
请问如何添加?
解决方案 »
- C#directshow播放视频全屏有黑边
- 截取字符串问题
- 向高手求救:Inno Setup 如何让生成的setup.exe文件双击以管理员权限运行
- 复制table的row的问题::无法将类型为“System.Data.DataRow”的对象强制转换为类型“System.IConvertible”。
- 如何写各正则表达式提取字符串
- 有没有打印文件名、成员函数名、代码行的宏在C#中?
- 请问Excel或者DBF可不可以用OleDb连接用Create Table创建表然后用SQL语句Update?
- 控件问题 求如何解决
- 怎样在SQL Sever中实现交叉表
- 关于邮件群发问题?知道的进来解答下
- C#学习方法
- c#数据显示问题
请问如何添加?给你个思路,你继承TreeView写一个自己的,然后重载其的PreProcessMessage方法,然后捕获KeyPress事件,再进行转发,例如:
public delegate void TreeViewKeyPress( Keys keyCode );
public class myTreeView:TreeView
{
private TreeViewKeyPress myKeyPress = null;
public override bool PreProcessMessage( ref Message msg )
{
Keys keyCode = (Keys)(int)msg.WParam & Keys.KeyCode;
if(msg.Msg == WM_KEYDOWN )
{
//
if( myKeyPress != null )
myKeyPress( keyCode );
return true;
}
return base.PreProcessMessage(ref msg);
}
public TreeViewKeyPress KeyPress
{
set{ myKeyPress = value; }
}
}
你设置Form的KeyPreview为true,然后在Form的KeyPreview、KeyDown事件中检测如果当前Form的激活对象是KeyDown,不正是你需的?
public override bool PreProcessMessage( ref Message msg ) //Message找不到命名空间,是不是smartphone的SDK不支持?flygoldfish(长江支流) :
这里Form没有KeyPreview属性