自定义控件继承自RichTextBox
在该控件中录入一个字符的时候,例如字符‘a’,我现在可以把这个消息截获,现在我想把这个字符替换成字符串,如‘录入了字符a’,最后在该控件显示为‘录入了字符a’,怎么实现啊?
 
protected override void DefWndProc(ref Message m)
    {
   switch((UInt32)m.Msg)
        {
            case WM_CHAR:
            case WM_SYSCHAR:
                int a=int)int)m.WParam;
                if(a==0x61)
                 {
                    //在此如何实现啊?
                    m.Result=(IntPtr)1;
                  }
           default:
                m.Result=(IntPtr)1;
                break;
           }
     }

解决方案 »

  1.   

    为什么不用控件的OnKeyDown事件?
      

  2.   


    public class NewRich : System.Windows.Forms.RichTextBox
        {
            const UInt32 WM_CHAR = 0x0102;
            const UInt32 WM_SYSCHAR = 0x0106;
            protected override void DefWndProc(ref System.Windows.Forms.Message m)
            {
                switch (UInt32.Parse(m.Msg.ToString()))
                {
                    case WM_CHAR:
                    case WM_SYSCHAR:
                        int nParam = (int)m.WParam;
                        this.Text = "您录入了:" + ((char)nParam).ToString();
                        m.Result = (IntPtr)1;
                        break;
                    default:
                        m.Result = (IntPtr)1;
                        break;
                }
                base.DefWndProc(ref m);
            }
        }
      

  3.   

    你这个是把所有的Text内容都被置换掉了,我要求的功能是在其插入的位置,其他内容不被替换掉。兄弟们继续啊,现在不忙结贴。