比较来自标签和输入(文本框)的字符串并在标签中显示结果。对数组进行加操作
Comparing string from label and input(textBox) and showing result in label. Plus operation on array
我正在以 Windows 形式编写一个 FlashCard 应用程序。
现在我正在尝试做的是从字符串数组中读取单词并将其传递给标签。然后要求用户写下这个词的翻译。最后将结果传递给label box。
这是我的代码:
public partial class EnglishPolishScreen : Form
{
//English words array
string[] words = new string[] { "word1", "word2", "word3", "word4" };
// meanings words array
string[] wordB = new string[] { "slowo1", "slowo2", "slowo3", "slowo4" };
int element = 0;
Thread thread;
public EnglishPolishScreen()
{
InitializeComponent();
}
private void CloseAppEvent(object sender, FormClosingEventArgs e)
{
Application.Exit();
}
private void button1_Click(object sender, EventArgs e)
{
thread = new Thread(Threadd);
thread.Start();
}
private void Threadd()
{
englishWord.Text = words[element];
counterLabel.Text = element + 1 + " of " + words.Length;
if (answerBox.Text.Equals(wordB[element]))
{
resultLabel.Text = "Good";
element++;
}
else
resultLabel.Text = "Bad";
if (element == words.Length)
{
element = 0;
}
}
private void EnglishPolishScreen_Load(object sender, EventArgs e)
{
englishWord.Text = words[element];
}
已编辑
伙计们,为什么我必须在按钮中单击两次才能看到数组中的下一项?为什么我在单击按钮后会立即看到“错误”答案?第二次点击后显示“好”答案。
已编辑v2.xD
排序。无论如何,编写这样的代码是好方法吗?如果不是它如何看起来更好?谢谢
此致
单击按钮时,它会遍历整个 for 循环,即整个含义列表,一旦找到正确的匹配项,您就必须打破 for 循环。所以只需在 resoultLabel.Text = "Good answer!";
之后使用 break;
。同样正如@Neil 所指出的,在单独的后台线程中使用 UI 是不好的。
顺便说一下,我无法理解 chances
的逻辑。为了给机会,您必须声明一个全局变量,当在遍历整个 for 循环后发现错误答案时,该变量将得到 added/subtracted,不允许对该词进行任何进一步的试验。
我正在以 Windows 形式编写一个 FlashCard 应用程序。
现在我正在尝试做的是从字符串数组中读取单词并将其传递给标签。然后要求用户写下这个词的翻译。最后将结果传递给label box。
这是我的代码:
public partial class EnglishPolishScreen : Form
{
//English words array
string[] words = new string[] { "word1", "word2", "word3", "word4" };
// meanings words array
string[] wordB = new string[] { "slowo1", "slowo2", "slowo3", "slowo4" };
int element = 0;
Thread thread;
public EnglishPolishScreen()
{
InitializeComponent();
}
private void CloseAppEvent(object sender, FormClosingEventArgs e)
{
Application.Exit();
}
private void button1_Click(object sender, EventArgs e)
{
thread = new Thread(Threadd);
thread.Start();
}
private void Threadd()
{
englishWord.Text = words[element];
counterLabel.Text = element + 1 + " of " + words.Length;
if (answerBox.Text.Equals(wordB[element]))
{
resultLabel.Text = "Good";
element++;
}
else
resultLabel.Text = "Bad";
if (element == words.Length)
{
element = 0;
}
}
private void EnglishPolishScreen_Load(object sender, EventArgs e)
{
englishWord.Text = words[element];
}
已编辑
伙计们,为什么我必须在按钮中单击两次才能看到数组中的下一项?为什么我在单击按钮后会立即看到“错误”答案?第二次点击后显示“好”答案。
已编辑v2.xD 排序。无论如何,编写这样的代码是好方法吗?如果不是它如何看起来更好?谢谢
此致
单击按钮时,它会遍历整个 for 循环,即整个含义列表,一旦找到正确的匹配项,您就必须打破 for 循环。所以只需在 resoultLabel.Text = "Good answer!";
之后使用 break;
。同样正如@Neil 所指出的,在单独的后台线程中使用 UI 是不好的。
顺便说一下,我无法理解 chances
的逻辑。为了给机会,您必须声明一个全局变量,当在遍历整个 for 循环后发现错误答案时,该变量将得到 added/subtracted,不允许对该词进行任何进一步的试验。