在Windows窗体上的两个事件方法中获取相同的数字

时间:2013-05-13 18:26:59

标签: winforms random event-handling

我创建了一个从中获取用户输入并将其与100个随机生成的数字进行比较。一旦他们点击猜测按钮,就会显示结果。为了帮助用户,当我们将鼠标悬停在标签上时,我应该给他们一个提示,提示应该比实际数字高3或低3。我无法弄清楚如何获得当用户点击猜测按钮时生成的随机数等于作为悬停事件的数字。对不起,所有的代码,任何帮助将不胜感激。

以下是我创建随机数的方法:

   public partial class Form1 : Form
   {
    int[] rndArray = new int[100];

    public void getNumbers()
    {
        Random random = new Random();
        for (int x = 0; x < rndArray.Length; x++)
        {
            rndArray[x] = random.Next(1, 100); 
        }
    }

这是guss按钮事件:

 private void Guess_Click(object sender, EventArgs e)
    {
        getNumbers();
        for (int x = 0; x < rndArray.Length; x++)
        {
                if (Convert.ToInt32(textBox1.Text) == rndArray[x])
                { 
                    result.Text = "You Win!";
                    correct.Text = "Correct: ";
                }
                else
                { 
                    result.Text = "Sorry - you loose; the number is: " + rndArray[x];
                    incorrect.Text = "Incorrect: ";
                }
        }

鼠标悬停事件:

private void mouseHere_MouseHover(object sender, EventArgs e)
    {
        getNumbers();
        for (int x = 0; x < rndArray.Length; x++)
            hint.Text = "It's not " + (rndArray[x] +- 3);
    }

1 个答案:

答案 0 :(得分:1)

我看到三个可能的问题。

首先,在鼠标悬停和猜测点击功能开始时,调用GetNumbers,它会生成100个数字并将它们分配给数组。你应该每场比赛只生成一次。我建议在每个游戏开始时调用它一次(可能在FormShown或FormLoad事件处理程序中),并且在下一个游戏开始之前不再调用它。否则,数字会不断变化。

其次,在鼠标悬停功能中,你有一个for循环,它将文本分配给“提示”100次。前99个提示可能不准确,因为鼠标悬停事件的结束将显示最后一个数字的提示。您需要确定要为其提供提示的数组元素,并将其分配给相应的提示显示。

第三,+-运算符不是C#中的实际运算符。如果这实际上正在编译和运行,它可能会以hint.Text = "It's not " + (rndArray[x] + (-3);的方式解释它。我建议使用Random对象生成一个数字,然后使用它是奇数还是甚至确定是否加或减。请确保您不重新分配阵列。

编辑:关于确定是否添加或减少提示,请确保每次悬停时不随机生成提示;为该号码做一次并存储提示。否则,将鼠标悬停几次将显示两种可能的提示。