我是c#的初学者,第一次需要你的帮助,因为我无法找到解决这个问题的方法。 我做了一个打字教程,我有一个richtextbox,里面填充了随机生成的字符,空格和3个新行。 用户必须在文本框中键入字符,如果他输入了足够的字符,则字符在richtextbox中变为绿色,他可以键入下一个字符。如果他犯了错误,他就不能移动到下一个角色,直到按下右键。
我的问题是一切正常,除了新线部分。 当程序比较2新线接受新线但是当按下ctrl + enter时,简单输入不会工作,程序以某种方式认为输入是一个错误的字符。 我需要使这个用户友好,并且需要一个简单的输入。
到目前为止我试过这个:
使文本框MultiLine没有任何区别。
将Acceptsreturn更改为true没有任何区别。
将字符串更改为richtextbox的文本,将Environment.Newline更改为\ r和\ n以及\ r \ n并且它没有区别。
将文本框更改为Richtextbox没有任何区别。
我尝试了以上所有可能的组合,但我无法解决问题所在。
这是随机字符生成部分:
public partial class Form1 : Form
{
char[] karakterek = { 'a','á','b','c','d','e','é','f','g','h','i','í','j','k','l','m','n','o','ó','ö','ő','p','q','r','s','t','u','ú','ü','ű','v','x','y','z' };
char[] nemkarakterek = {'0','1','2','3','4','5','6','7','8','9','"',',','+','%','/','=',':','-',};
char egykarakter;
string teljes = "";
int mutato = 0;
Random r = new Random();
public Form1()
{
InitializeComponent();
karakterfeltolt();
}
private void karakterfeltolt()
{
int hanyszor = 0;
do
{
string egesz = "";
if (hanyszor < 3)
{
do
{
if (egesz.Length < 150)
{
if (r.Next(1,15)<14)
{
egykarakter = karakterek[r.Next(0, karakterek.Length)];
egesz = egesz + egykarakter;
}
else
{
egykarakter = nemkarakterek[r.Next(0, nemkarakterek.Length)];
egesz = egesz + egykarakter;
}
}
} while (egesz.Length < 150);
if (egesz.Length > 150)
{
egesz = egesz.Substring(0, 150);
}
int vanespace = 0;
egesz = egesz.Insert(r.Next(2, 10), " ");
for (int i = 0; i < egesz.Length - 10; i++)
{
if (egesz[i] == ' ')
{
vanespace = i;
int eselynovelo = r.Next(0, 10);
if (eselynovelo > 6)
{
egesz = egesz.Insert(r.Next(vanespace + 3, vanespace + 10), " ");
}
else
{
egesz = egesz.Insert(r.Next(vanespace + 6, vanespace + 10), " ");
}
}
}
string nagybetus = egesz.Substring(0, 1).ToUpper() + egesz.Substring(1);
nagybetus = nagybetus.Insert(nagybetus.Length, ".\r\n");
teljes = teljes + nagybetus;
hanyszor++;
}
} while (hanyszor < 3);
richTextBox1.Text = teljes;
}
这是文本框比较部分:
private void textBox3_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == richTextBox1.Text[mutato])
{
richTextBox1.SelectionStart = 0;
richTextBox1.SelectionLength = mutato + 1;
richTextBox1.SelectionColor = Color.Green;
mutato++;
label2.Text = "OK";
}
else
{
label2.Text = "Wrong";
e.Handled = true;
}
}
我还能做什么?请帮帮我。