想做个简单的打字练习软件,label1中放要打的原始文字(中西混合),将打错的字着上红色,总做不好,请各位老哥看看: 
       private void TestChenged(object sender, EventArgs e)
        { 
            if (richTextBox1.SelectionColor == Color.Red)
                    richTextBox1.SelectionColor = Color.Black;
            for (int i = 0; i < richTextBox1.Text.ToString().Length; i++)
            {
                
                if (richTextBox1.Text.ToString().Substring(i, 1)
                    != label1.Text.ToString().Substring(i, 1))
                {
                    richTextBox1.Select(i, 1);
                    richTextBox1.SelectionColor = Color.Red;
                }               
            }
        }

解决方案 »

  1.   

    这个好象不好实现吧 所有字符都是放在一个lable上的 要改变一个恐怕所有的都得变化吧期待了
      

  2.   

    谢谢,改进了一点,但不知光标怎样记录,然后恢复光标位置:
             private void TestChenged(object sender, EventArgs e)
            { 
                //在这儿怎么保存当前光标的位置啊???
                for (int i = 0; i < richTextBox1.Text.Length; i++)
                {
                    //richTextBox2放要打的字
                    
                    if (richTextBox1.Text.Substring(i, 1)
                        != richTextBox2.Text.Substring(i, 1))
                    {
                        richTextBox1.Select(i, 1);
                        richTextBox1.SelectionColor = Color.Red;
                        richTextBox1.SelectionStart=i + 1;//笨办法,在已打文字中间修改时,光标一下跑到最后去了。
                                                          //如何能让光标在打入或修改文字后就停在修改处的后面。
                    }
                    else//让打错变红的字在改正确后能变回正常的黑色
                    {
                        richTextBox1.Select(i, 1);
                        richTextBox1.SelectionColor = Color.Black;
                        richTextBox1.SelectionStart = i + 1;//笨办法
                        
                    }
                }
                //在这儿怎么恢复光标的位置???
                //每打一字所有文字都得重新判断(在已打的字中间去删除时又需要),好像效率比较低啊,有没有更好的办法
            }
    请各位帮忙了!!!
      

  3.   

    这样实现了!     
       private void  TestChenged(object sender, EventArgs e)
            {            
                int current = richTextBox1.SelectionStart;//在这儿保存当前光标的位置
                for (int i = 0; i < richTextBox1.Text.Length; i++)
                {
                    //richTextBox2放要打的字
                    //richTextBox1是用户打入的字
                    if (richTextBox1.Text.Substring(i, 1)
                        != richTextBox2.Text.Substring(i, 1))
                    {
                        richTextBox1.Select(i, 1);
                        richTextBox1.SelectionColor = Color.Red;                   
                    }
                    else//注意这儿哦:让打错变红的字在改正确后能变回正常的黑色
                    {
                        richTextBox1.Select(i, 1);
                        richTextBox1.SelectionColor = Color.Black;                   
                    }             
                }
                richTextBox1.SelectionStart = current;//恢复光标的位置
                richTextBox1.Select(current, 0);  
            }
    请大家继续,不然我的分不好给哦:)