2011-06-05 95 views
0

嗨,人們我是新手在C#世界,我有一個問題。我已經做了我的程序在Form_Load方法的數組,但我需要訪問陣列中的picture_box方法是這樣的:在C中訪問私有方法#

 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」不存在於當前上下文中

+1

導致錯誤的線是什麼? – trutheality 2011-06-05 06:59:41

回答

4

您需要在類級別(Form2_Load外部)定義int [] imgArray,而不是在其內部。否則,該變量的「範圍」僅限於該功能。你需要敲掉Form2_Load中的第一個「int []」部分,以防止你只聲明一個新的變量。

例如:

public class MyClass 
{ 
    private int[] myInt; 

    public void Form2_Load(...) { 
     myInt = ...; 
    } 

} 
+0

謝謝你,至少在我的情況下,沒有必要聲明我的數組是私有的。再次非常感謝! – Andres 2011-06-05 07:15:49

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 

} 

希望有幫助。