Not: Bu zaten işe yaramaz, ancak anlamaya çalışıyorum Neden bu şekilde çalışıyor, ancak diğeri değil.Kod karışıklığı - neden çalışıyor, ama diğeri değil?
Dinamik, görüntüleri koymak şöyle bir WinForm (C#) var: Eğer 'Napred' butonuna tıklayın Şimdi eğer
, bu görüntüler, (diğer şeyler arasında) silinmesi gerektiğini kendisi için Başlangıçta kullandı: Ben bu çalıştırırsanız
foreach(Control ctrl in Controls)
if(ctrl is PictureBox) ctrl.Dispose();
veya
for(int i = 0; i < Controls.Count; i++)
if(Controls[i] is PictureBox) Controls[i].Dispose();
Şimdi, olsun:
Sadece geriye göndermekfor
deyimi değiştirirseniz
Ama, bu çalışır ?
for(int i = Controls.Count - 1; i >= 0; i--) if(Controls[i] is PictureBox) Controls[i].Dispose();
((Ben sadece düğmeleri) sonunda sol olsun ben başka bir resim yüklemek için gitmiyorum, ama bu elementlerin hepsi siler) bir çalışır neden birisi aydınlatmak bana ama diğer değil mi?
DÜZENLEME: Bu bir hata ayıklama hatası bile olsa, Windows 10 üzerinde VS2015 topluluk edition kullanıyorum
kullanırken bu nedenle her zaman bu davranışı bulamazsınız çoğu bertaraf yöntemleri ile behavour varsayılan ve sonra Öğe1'ı silmek değil ve kalan 9 öğeniz olacak. Dizi öğelerinin standart olarak atılması yöntemi, geriye doğru adım atmaktır. – LightBulb
Diğer yaklaşımlar için ilgi çekici olabilir: http://stackoverflow.com/questions/7340757/c-sharp-list-removing-items-while-looping-iterating –
Neden yöntemi kaldırmıyorsunuz? –