Доступ к приватному методу в C#
Привет, люди. Я новичок в мире 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' не существует в текущем контексте
2 ответа
Вам нужно определить int[] imgArray на уровне класса (вне Form2_Load), а не внутри него. В противном случае "область" этой переменной ограничена этой функцией. Вам нужно будет удалить первую часть "int[]" в Form2_Load, чтобы помешать вам просто объявить новую переменную.
Например:
public class MyClass
{
private int[] myInt;
public void Form2_Load(...) {
myInt = ...;
}
}
Ошибка означает именно то, что она говорит.
Вы объявили массив в области действия функции 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
}
Надеюсь, это поможет.