protected override void WndProc(ref Message m)
        {
           if (((int)m.WParam) >> 16 == 0x300)
            {
                MessageBox.Show("f");
            }
            base.WndProc(ref m);
        } 0x300 对应 EN_CHANGE,即文本框输入数据变化时触发。但是当我把文本框放入Panel时,就不能触发,只有放在窗体Form上才可以触发。请问各位怎样获取Panel里文本框输入数据的En_Change

解决方案 »

  1.   

    直接利用文本框的OnChange事件处理了不就行了。
    为什么要拦截消息呢?
      

  2.   

    继承一个TextBox然后从工具栏中用这个TextBox就可以了。public partial class Component2 : TextBox
        {
            public Component2()
            {
                InitializeComponent();
            }
            
            protected override void WndProc(ref Message m)
            {
                if (((int)m.WParam) >> 16 == 0x300)
                {
                    MessageBox.Show("f");            }
                base.WndProc(ref m);
            }
      

  3.   

    知道OnChange,我只是用TextBox举例,当控件直接放窗体的时候可以捕获Windows的事件,但是加一个Panel或其他容器控件后,在把TextBox或其他控件加入容器控件后,在窗体上重写WndProc就不能再捕获事件了,就连WM_COMMAND也捕获不了。