我用.net 2003开发smartphone程序,但是里面的TreeView 控件没有KeyDown事件。
请问如何添加?

解决方案 »

  1.   

    to 我用.net 2003开发smartphone程序,但是里面的TreeView 控件没有KeyDown事件。
    请问如何添加?给你个思路,你继承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; }
            }
    }
     
      

  2.   

    TreeView 控件没有KeyDown事件但是Form有啊,哈哈
    你设置Form的KeyPreview为true,然后在Form的KeyPreview、KeyDown事件中检测如果当前Form的激活对象是KeyDown,不正是你需的?
      

  3.   

    Knight94(愚翁):
    public override bool PreProcessMessage( ref Message msg )  //Message找不到命名空间,是不是smartphone的SDK不支持?flygoldfish(长江支流) :
    这里Form没有KeyPreview属性
      

  4.   

    to public override bool PreProcessMessage( ref Message msg ) //Message找不到命名空间,是不是smartphone的SDK不支持?有可能,看看smartphone相关的说明。
      

  5.   

    这里用smartphone的不多,楼主还是自己详细去看看资料