2011-11-17 32 views
8

Diğer bileşenler arasında list adlı ListView nesnesini içeren basit bir Windows formum var. Formda, bir buton list.Items.Clear() ile tıklandığında listeyi boşaltmamı sağlar. Bu iyi çalışıyor.Boş Liste Görünümü

Artık Test numaralı ayrı bir sınıfa sahibim, yöntemi update() yöntemi, form dışındaki bazı olaylarda çağrılır. Formun yapımında, SetList yöntemini kullanarak listeye bir başvuru iletirim. Hata ayıklama modunda, tetiklediğim ve içeriği yürütüldüğüm olaylarda update() çağrılır, ancak listemim temizlenmez.

Bu neden? Referans doğru ayarlanmış, kontrol ettim.

class Test 
{ 
    private ListView list; 

    public void setList(ListView list) 
    { 
     this.list = list; 
    } 

    public void update() 
    { 
     this.list.Items.Clear(); 
    } 
} 

listemden daha yakından bakmak

() güncellemesinde kesme noktaları koyarak değiştirilen, liste temizlenir ve temizlenmiş kalır. Gerçekten değiştirilmiş başka bir liste gibi görünüyor, ama sadece bir tane var ve hiçbir zaman yeni bir şey yapmam ... ???? Bu işe yaramazsa size list nesnenin başka bir örneğini değiştirerek olduğunuzu açıktır,

public void update() 
    { 
     this.list.Items.Clear(); 
     this.list.Update(); // In case there is databinding 
     this.list.Refresh(); // Redraw items 
    } 

:

+1

Veri kaynağıyla bağlanan öğeler, şunu deneyin: list.DataSource = null; list.DataBind(); – sll

+0

benim tahminim öyle değil. Ben her zaman bu this.list.Items.Add – Jerome

+3

yöntemini ekleyerek bu gibi bir kod ile% 95, başka bir form örneğinin liste görünümünü temizlemenizdir. görünür form örneği. –

cevap

5

aşağıda modifiye update yöntemi kullanın. Bu durumda, aşağıdaki gibi nesnenin beyanını geçici olarak değiştirin ve herhangi bir değişiklik olup olmadığını görün. öyle ise, listenin sağ örneğini temizliyoruz emin olmak için kodunuzu gözden gerekir: Benim durumumda

private static ListView list; 
0

, ben veri bağlamaları kullanmıyorum, daha ziyade açıkça öğeler eklemek Add() kullanarak bir döngüde. Bana ListView.Clear() ve ListView.Items.Clear()'un çalışmadığı göründü.

... ListView aslında temizlendi ediliyordu çıkıyor ama giriş listesi temizleyerek olmasaydı, bu yüzden etkili bir yeniden doldururken önceden temizlenmiş öğelerle ListView sonra takas edildi ve.

Bazen en basit şeyler ... D'OH!