不会出现你说的情况啊,我用的搜狗五笔,用别的输入法也正常。你看看richTextBox的ImeMode属性是什么

解决方案 »

  1.   

    应该不是这个问题吧
    你不加这个,打字没问题?
    你字打上去之前,text值都没有变化,也不会执行changed事件
      

  2.   

    确实有这个问题的,就是打字的时候你大MMGD 是册 接着我再想打一个一 那么我会在键盘里面输入mmgdG ,这样子就丢失了一个g得重复按一次,一定要在上面的事件中才会有的,其他不会有这个问题,谢谢。麻烦各位大神帮忙看看,这个问题,到目前还没得到解决。
      

  3.   

    应该跟你用的输入法有关如果用拼音输入法,不按空格是不出字的而你用五笔输入法,输入法判断mmgd就已经是个字了,你再打g,它会先出个"册",然后再出"一"
    而出了一个字之后,你的控件执行方法去了,而不响应你的后续输入了
      

  4.   

    不行用timer呗,100ms执行一次,没人能1秒打10个字上去吧,只是为了看的话,足够了
      

  5.   

    不行用timer呗,100ms执行一次,没人能1秒打10个字上去吧,只是为了看的话,足够了。这个方法还是不行,因为我放了差不多有6个richtexbox控件,所以还是需要时时获得的,部分代码如下,不知道怎么样才可以改写成timer这种方法。
     RichTextBox richTextBox = sender as RichTextBox;
                if (richTextBox != null)
                    try
                    {                    if (richTextBox.Text.Contains(" "))
                        {
                            richTextBox.Text = richTextBox.Text.Replace(" ", "\u3000");
                        }
                        string text = richTextBox.Text;
                        for (int i = 0; i < text.Length; i++)
                        {
                            if (text[i] != '\u3000')
                            {
                                int num = (int)text[i];
                                if (num > 40869 || num < 19968)
                                {
                                    char c = (char)num;
                                    text = text.Replace(string.Concat(c), "");
                                    i = 0;
                                }
                            }
                        }
                        richTextBox.Text = text;
                        richTextBox.Select(0, richTextBox.TextLength);
                        richTextBox.SelectionBackColor = Color.Black;
                        richTextBox.SelectionColor = Color.White;
                        richTextBox.Select(richTextBox.TextLength, 0);
                        this.lastColoredIndex = -1;
                        if (richTextBox.Text.Length > 33)
                        {
                            string text2 = richTextBox.Text.Substring(0, 33);
                            richTextBox.Text = text2;
                            this.lastColoredIndex = -1;
                        }
                        richTextBox.SelectionStart = richTextBox.Text.Length;
                        this.RefreshUI();
                        if (richTextBox.Text.Length == 33)
                        {
                            if (richTextBox == this.tRTB1 && this.newlineflag[0])
                            {
                                return;
                            }
                            if (richTextBox == this.tRTB2 && this.newlineflag[1])
                            {
                                return;
                            }
                            if (richTextBox == this.tRTB3 && this.newlineflag[2])
                            {
                                return;
                            }
                            if (richTextBox == this.tRTB4 && this.newlineflag[3])
                            {
                                return;
                            }
                            if (richTextBox == this.tRTB5 && this.newlineflag[4])
                            {
                                return;
                            }
                            if (richTextBox == this.tRTB6 && this.newlineflag[5])
                            {
                                return;
                            }
                            this.newlineflag[this.currentline - 1] = true;
                            this.currentline++;                        this.lastColoredIndex = -1;
                            RichTextBox richTextBox2 = null;
                         
                                   
          
    如果套上timer事件中,那么上面的richtextbox就是为空,所以就无法对打字进行判断了。另外如果要时时得到这个richtexbox又要写上上面的方法才可以。textchanged事件获得才行。