集成了control类,也画了控件,但是要怎么能够让切换输入法的时候能够工作呢?现在输入法都不工作,怎么让输入法知道这个控件是能输入的呢?外加要怎样得到值呀。小弟只知道这个可能是需要进行窗口消息操作的,但是怎么查都查不到要怎么给输入法发消息,还有用什么消息来接输入的内容,最重要的是输入法连工作都不工作完全不知道要怎么搞了,求高手指点呀。

解决方案 »

  1.   

    在控件获得焦点的时候执行base.Focus()试试
      

  2.   

    http://topic.csdn.net/u/20070418/10/d82d5ecd-bbc6-4f6b-9b4d-5d6b949fb45f.html如果看不懂我可以解释一下
      

  3.   

    WM_IME_COMPOSITION 这个值你获取到了么??如果没有的话 参考 http://topic.csdn.net/t/20040819/18/3291401.html
      

  4.   

    能在重写的WndProc里抓到,在打开输入法以后只要按下键了,就有反应,不开输入法没反应
      

  5.   


    恩,我继承了Control类的控件应该是默认就可以使用输入法,开输入法的时候出输入法自己的小框,就是有点纳闷要怎么让它不能用输入法外加如果获取输入法的内容的话,我要用哪个消息去获得输入法输入的值呢,普通的常规键盘响应没问题
      

  6.   

    现在我用WM_IME_COMPOSITION这个消息,也只是知道它在输入法下按键了不知道按了什么
      

  7.   

    http://www.cnblogs.com/yufb/archive/2011/06/17/2083497.html一般的实现 还用到WM_IME_CHAR或者WM_CHAR
      

  8.   

    直接继承textbox控件啊,否则工作量很大的
      

  9.   

    我主要是想让它能够放动态的gif图,就跟QQ的对话框一样
      

  10.   

    最后的结果是发现调用api操作ime能得内容,不过离聊天工具还差远了所以放弃了这个思路。
    然后又去看richtextbox的扩展,结果问题多多,像图压在字上面什么的
    再后来发现,原来webBrowser这个控件是可以改造的,开启编辑模式以后,几乎所有的功能都有了,唯一缺的就是粘贴图的时候,那图最后怎么发出去之类的问题,继续研究中结贴了
      

  11.   

    有例子吗,求丫,我现在想重写webbrowser的复制,粘贴,剪切,但是就是找不到办法中顺便还想替换右键菜单,网上多为屏蔽,没替换
      

  12.   

    重写就不知道了不过操作dom很容易webbrowser.document......
      

  13.   

    不过你可以考虑捕获事件 onpaste事件 .....
      

  14.   

    我也是这么想的可是问题是它压根没有这个事件呀,囧,没有的话我也加不进去呀,所以我在想是不是应该重写keydown事件之类的,或者是窗口消息,拦截粘贴的消息,这么改等明天看看试一下
      

  15.   

    onpaste事件是一定有的如果你在webbrowser.document.body之类的没找到引用mshtml使用domdocument
      

  16.   

    private void Form1_Load(object sender, EventArgs e)
        {
            webBrowser1.DocumentCompleted += (s, e1) =>
            {
                webBrowser1.Document.Body.DetachEventHandler("oncopy", OnCopy);
                webBrowser1.Document.Body.AttachEventHandler("oncopy", OnCopy);
                webBrowser1.Document.Body.DetachEventHandler("onpaste", OnPaste);
                webBrowser1.Document.Body.AttachEventHandler("onpaste", OnPaste);
            };
                
            webBrowser1.Navigate("www.sina.com");
        }    void OnCopy(object sender, EventArgs e)
        {
            dynamic doc = webBrowser1.Document.DomDocument;
            string text = doc.selection.createRange().text;
            MessageBox.Show("copying text:" + text);
        }    void OnPaste(object sender, EventArgs e)
        {
            string text = Clipboard.GetText();
            Clipboard.SetData("Text", "paste text:" + text);
        }是像这样重写的吧,这样在不打开编辑模式时还管用,一开启控件的编辑模式,加上这2句
    webBrowser1.DocumentText = "<html><body></body></html>";
       IHTMLDocument2 doc = webBrowser1.Document.DomDocument as IHTMLDocument2;
       doc.designMode = "On";
    那复制粘贴就没效果了那这个控件就不能当对话框来使用了
      

  17.   

    你在body中设置属性 CONTENTEDITABLE  不用开启空间的编辑模式