2015-11-05 2 views
-1

Я не понимаю, что я делаю неправильно, но я получаю эту ошибку при попытке пропустить этот массив созданий изображений. Таким образом, я использовал попытку и уловку, чтобы сузить ее, но все же я не знаю, что случилось?C# Цикл через массив блоков изображений - NullReferenceException?

private System.Windows.Forms.PictureBox[] imgVictim = new PictureBox[3]; //array for victim images 
public void victimsRun() 
{ 
    victimTimer.Enabled = true; //starts the timer 

    PictureBox[] victim = new PictureBox[3]; 
    for (int i = 0; i < imgVictim.Length; i++) // 0 - 2 
    { 

     try 
     { 
      imgVictim[i].Image = Image.FromFile("victim" + i.ToString() + ".png"); 
     } 
     catch (NullReferenceException) 
     { 
      MessageBox.Show("NULL EXECEPTION!"); 
     } 
     MessageBox.Show(i.ToString()); 
    } 
} 

Может ли кто-нибудь мне помочь?

+3

Создание массива 3 PictureBox не означает, что вы создали 3 PictureBox. – Steve

+2

Подсказка: сколько экземпляров 'PictureBox' * вы считаете, что созданный вами код создает? Где вы вызываете конструкторы «PictureBox»? –

+0

Я не создавал никаких конструкторов для PictureBox, это необходимо? Спасибо за быстрый ответ. – Harry

ответ

1

Вам нужно создать каждый PictureBox, прежде чем использовать его

imgVictim[i] = new PictureBox(); 

Попробуйте

private System.Windows.Forms.PictureBox[] imgVictim = new PictureBox[3]; //array for victim images 
public void victimsRun() 
{ 
    victimTimer.Enabled = true; //starts the timer 
    string fileName = ""; 
    PictureBox[] victim = new PictureBox[3]; 
    for (int i = 0; i < imgVictim.Length; i++) // 0 - 2 
    { 
     try 
     { 
      fileName = "victim" + i.ToString() + ".png"; 
      if (System.IO.File.Exists(fileName)) 
      { 
       imgVictim[i] = new PictureBox(); 
       imgVictim[i].Image = Image.FromFile("victim" + i.ToString() + ".png"); 
      } 
      else 
      { 
       // file does not exist or needs a path in front of it 
      } 
     } 
     catch (NullReferenceException) 
     { 
      MessageBox.Show("NULL EXECEPTION!"); 
     } 
    } 
} 
+0

Я все еще получаю исключение. – Harry

+0

Я добавил второй пример кода в свой первый ответ, посмотрим, поможет ли это. Возможно, я не смогу ответить некоторое время, в Microsoft, на встрече. –

Смежные вопросы