我是编程的初学者,所以如果这是一个简单的问题,我很抱歉。我的程序在启动应用程序时会产生随机数学问题(另外)。用户输入他/她认为是答案的内容。接下来,用户单击按钮并显示文本,指示用户的答案是否正确。
我在Form Load事件中使用了变量number1和number2。如何在按钮单击事件中轻松再次使用它们?
(希望我的代码能够展示我的目标).....
public Form1()
{
InitializeComponent();
}
//New Method
private void GenerateRandoms()
{
// create random number variable
Random randomNumber = new Random();
int number1;
int number2;
number1 = randomNumber.Next(100, 501);
number2 = randomNumber.Next(100, 501);
randomProblemLeft.Text = number1.ToString();
randomProblemRight.Text = number2.ToString();
}
private void Form1_Load(object sender, EventArgs e)
{
// Call created method so random numbers are generated once form loads.
GenerateRandoms();
}
private void checkButton_Click(object sender, EventArgs e)
{
int rightAnswer; //The correct answer for the addition problem
int theirAnswer; // The answer given by the user
theirAnswer = int.Parse(answerInput.Text);
rightAnswer = (number1 + number2); //Trying to reuse these variables from first event????????????
if (rightAnswer == theirAnswer)
{
checkOutput.Text = "Yes, that is the correct answer!";
}
else
{
checkOutput.Text = "Sorry, that is incorrect!";
}
}
private void clearButton_Click(object sender, EventArgs e)
{
answerInput.Text = "";
checkOutput.Text = "";
GenerateRandoms();
}
private void exitButton_Click(object sender, EventArgs e)
{
this.Close();
}
}
}
答案 0 :(得分:0)
按钮单击事件实际上有自己的范围,因此您有几个选项。首先在按钮单击事件中再次声明变量number1和number2。
如果您因某些原因希望值保持不变,那么您可能希望在类的范围内声明number1和number2。这将使它们成为您创建的对象的一部分。
例如
public class Form1()
{
private int number1;
private int number2;
//your functions here
}
答案 1 :(得分:0)
局部变量一旦超出范围就会消失(即在达到声明本地的块的结束大括号之后)。他们的价值被抛弃,无法恢复。这就是本地人在这种情况下无法工作的原因:你需要将它们设为实例变量。
在类级别将变量声明为private,从方法中删除声明,并在任何方法中使用实例变量:
private int number1; // Declared at the form level
private int number2;
private void GenerateRandoms()
{
// create random number variable
Random randomNumber = new Random();
number1 = randomNumber.Next(100, 501);
number2 = randomNumber.Next(100, 501);
...
}
private void checkButton_Click(object sender, EventArgs e)
{
int answer = number1 + number2;
...
}
答案 2 :(得分:0)
通过将它们放在与方法相同的括号级别,可以使它们成为Form1类的“全局”。这使它们成为成员字段:
class Form1
{
private int number1;
private int number2;
// . . . the rest of the class goes here –
}
这样做可以使它们(在范围内)可用于所有类方法。将'private'关键字放在那里会使其无法访问它们。