比较来自标签和输入(文本框)的字符串并在标签中显示结果。对数组进行加操作

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,不允许对该词进行任何进一步的试验。