我想在c#中编写简单的应用程序,帮助我学习触摸打字。现在我正在制作比较文本和用户输入的字符的方法。我有问题,因为我做了一些方法来寻找文本更改:
private void tb_write_TextChanged(object sender, TextChangedEventArgs e)
{
TextBox t =(TextBox)sender;
if (Words.WordCompare(tb_text.Text.ToCharArray(), t.Text.ToCharArray()))
{
l_words.Content =("OK");
}
else
{
l_words.Content = ("Not ok");
}
}
然后我有我的WordCompare方法:
class Words
{
public static bool WordCompare(char[] input, char[] output)
{
List<char> used = new List<char>();
foreach(char ch_out in output)
{
foreach (char ch_in in input)
{
if (ch_out == ch_in)
{
used.Add(ch_in);
return true;
}
}
}
return false;
}
主要问题是,如果用户输入正常(我的意思是用户正确地写每个字符)方法工作正常,但它只检查第一个字符,无论我写什么然后总是返回true。此外,当来自文本和用户输入的任何字母相同时,它返回true,而不是它的位置。我想添加&#34;使用&#34;要列出的字符以跟踪它们,但每次调用方法时都会生成新列表。你能帮我解决这个问题吗,或者还有另外一种解决方法吗?
答案 0 :(得分:0)
class Words
{
public static bool WordCompare(char[] input, char[] output)
{
List<char> used = new List<char>();
bool flag = true;
if(input.Length!=output.Length) {return false;}
for(int i=0;i<input.Length;++i)
{
if (input[i]==output[i])
{
used.Add(ch_in);
}
else
{
flag = false;
break;
}
}
return flag;
}
除了我想说的是:你不需要在输入每个字符时进行比较,而只是通过让客户点击另一个新按钮来比较整个字符串,在哪个按钮中事件点击只需使用你的foreach进行比较。