C#实现打字小游戏(二)

C#实现打字小游戏(二)_第1张图片
实现这样的效果关键在于对输入文字的控制richTextBox__TextChanged事件的应用

private void richTextBox2_TextChanged(object sender, EventArgs e)
        {
        //判断输入长度
            if (richTextBox2.Text.Length != 0)
            {
                length = richTextBox2.Text.Length;
                index = length;


                ch = richTextBox2.Text.ToCharArray();//把输入的字符串转化为字符数组

                for (i =0; i < index; i++)//遍历字符数组,让每个字和文中的内容一一比较
                {
           
                    if (ch[i] != ch1[i])//ch1是文本中的字
                    {//如果输入的字和上文中的字不一样,选中这个字,让选中的字变成红色
                        richTextBox1.Select(i, 1);
                        richTextBox1.SelectionColor = Color.Red;

                    }

                }
            }

        }

窗体载入时初始化文中的字符数组

  private void Form1_Load(object sender, EventArgs e)
        {
            ch1 = richTextBox1.Text.ToCharArray();
            richTextBox2.Select(0, 0);
        }

然后是如果退格的话让字重新变为黑色

private void richTextBox2_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == '\b')
            {
                richTextBox1.Select(index, 1);
                richTextBox1.SelectionColor = Color.Black;
        
            }
        }

label1标签是用来显示时间,当然还有记录成绩都在打字小游戏(一)中有描述,就不重复说明。

你可能感兴趣的:(C#实现打字小游戏(二))