大家好我是C#世界的新手,我遇到了问题。我在我的程序的Form_Load方法中完成了一个数组,但是我需要像这样在picture_box方法中访问数组:
private void Form2_Load(object sender, EventArgs e)
{
//In this method we get a random array to set the images
int[] imgArray = new int[20];
Random aleatorio = new Random();
int num, contador = 0;
num = aleatorio.Next(1, 21);
imgArray[contador] = num;
contador++;
while (contador < 20)
{
num = aleatorio.Next(1, 21);
for (int i = 0; i <= contador; i++)
{
if (num == imgArray[i])
{
i = contador;
}
else
{
if (i + 1 == contador)
{
imgArray[contador] = num;
contador++;
i = contador;
}
}
}
}
}
private void pictureBox1_Click(object sender, EventArgs e)
{
pictureBox1.Image = Image.FromFile(@"C:\Users\UserName\Desktop\MyMemoryGame\" + imgArray[0] + ".jpg");
}
但我只收到错误:错误1当前上下文中不存在名称'imgArray'
答案 0 :(得分:4)
您需要在类级别(Form2_Load之外)而不是在其中定义int [] imgArray。否则,该变量的“范围”仅限于该函数。您将需要敲除Form2_Load中的第一个“int []”部分,以防止您仅声明一个新变量。
例如:
public class MyClass
{
private int[] myInt;
public void Form2_Load(...) {
myInt = ...;
}
}
答案 1 :(得分:3)
错误意味着它所说的内容。
您已在Form2_Load函数的范围中声明了数组。除此之外,它将不存在。
要执行您要实现的目标,请将一个私有数组添加到表单本身。
private int[] _imgArray = new int[20];
private void Form2_Load(object sender, EventArgs e)
{
//Setup the imgArray
}
private void pictureBox1_Click(object sender, EventArgs e)
{
//_imgArray is now available as its scope is to the class, not just the Form2_Load method
}
希望这有帮助。