2015-12-19 6 views
-1

У меня есть метод, который удаляет все старые изображения из массива и добавляет новые, но в последней строке он выдает исключение System.NullReferenceException.C# PictureBox always throws NullReferenceException

PictureBox[] selectedCards = new PictureBox[0]; 
byte selectedCardsCount = 0; 
int selectedCardsIndex = 0; 

private void AddSelectedCard(int index, PictureBox newCard) 
     { 
      if (selectedCards.Length != 0) 
      { 
       foreach (PictureBox card in selectedCards) 
       { 
        this.Controls.Remove(card); 
       } 
      } 

      selectedCardsCount++; 

      selectedCards = new PictureBox[selectedCardsCount]; 

      selectedCards[selectedCardsIndex].Image = new Bitmap(newCard.Image); //The exception is thrown on this line 

      selectedCardsIndex++; 
    } 

Когда я отладки программы:

selectedCards [selectedCardsIndex] является 0 (не нуль)

newCard.Image является System.Drawing.Bitmap (также не равно нулю)

+0

Ваш последний абзац не имеет смысла. 'selectedCards [selectedCardsIndex]' имеет тип 'PictureBox', он никогда не может быть' 0'. –

ответ

2

You создать новый массив PictureBox эс в этой линии

selectedCards = new PictureBox[selectedCardsCount]; 

Bu t это создает только массив, а не PictureBox. Так что вам необходимо их создать:

selectedCards[selectedCardsIndex] = new PictureBox(); 
this.Controls.Add(selectedCards[selectedCardsIndex]); 

selectedCards[selectedCardsIndex].Image = new Bitmap(newCard.Image); 
+0

Спасибо, это помогло мне! – user3246250

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

  • Нет связанных вопросов^_^