Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
[erledigt] Listview wird nach .Clear() nicht mehr neu gezeichet
schuppsl
myCSharp.de - Member



Dabei seit:
Beiträge: 784

Themenstarter:

[erledigt] Listview wird nach .Clear() nicht mehr neu gezeichet

beantworten | zitieren | melden

Hallöle.

Man eine Newbie Frage zu einem anderen Thema.
Ich bin ja sonst asp.net progger, muss aber für nen Kunden ein kleinen Windows.Forms Progrämschen bauen. Der Kollege ist im Urlaub, kann den also nicht fragen:-)


Also ich lese ganz einfach Daten aus einer Textdatei und liste diese in einer Windows Form in ein Listview.

Geht perfekt, sortieren geht auch schon.

Jetzt bin ich dabei nen Filter zu klöppeln, wo es noch hakt.
Also Textfeld und Button eingebaut, bei Klick auf den Button wird einfach die Itemkollection durchlaufen und festgestellt, ob der Suchtext irgendwio vorkommt.

Geht auch soweit.

Jetzt möchte ich das Ergebnis natürlich auch darstellen und vorher das Listview löschen um dann die gefilterten items einzufügen.

Das Clear geht, aber danach werden keine Daten mehr angezeigt.

also hier mal Quellcode:

 private void btnFilter_Click(object sender, EventArgs e)
        {

            ListView.ListViewItemCollection coll = new ListView.ListViewItemCollection(listBuchdat);
            coll = listBuchdat.Items;


            foreach (ListViewItem item in coll)
            {
               ListViewItem.ListViewSubItemCollection subColl = item.SubItems;
               ListViewItem.ListViewSubItem myItem = new ListViewItem.ListViewSubItem(item, txtFilter.Text);



               for (int i = 0; i < subColl.Count; i++)
               {
                   if (subColl[i].Text == txtFilter.Text) 
                   {
                       ListViewItem listItem = new ListViewItem(subColl[0].Text);   //Name
                       listItem.SubItems.Add(subColl[1].Text);                      //Ausweis
                       listItem.SubItems.Add(subColl[2].Text);                      //Datum  
                       listItem.SubItems.Add(subColl[3].Text);                      //Uhrzeit
                       listItem.SubItems.Add(subColl[4].Text);                      //Buchart
                       aItem.Add( listItem);
                   }
               } 
                
            }

           

        
            listBuchdat.Clear();
            UpdateListView();
             
        }


        private void UpdateListView()
        {
            ListViewItem[] items = (ListViewItem[])aItem.ToArray();
            listBuchdat.Items.AddRange(items);
            listBuchdat.Update();
        }

Also das aItem ist so definiert:

List<ListViewItem> aItem = new List<ListViewItem>();    

Ich speichere die Daten also zwischen und klopfe sie dann mit UpdateListView wieder rein.
vorher lösche ich das mit Clear().

Gelöscht wirds, aber die Daten kommen nicht wieder rein...
Ich habe noch einen anderen Button, der die Hauptfunktion aufruft die auch beim Start aufruft, die das Listview füllt.
Klicke ich diesen, werden die Daten immer und immer wieder eingetragen, was ja auch klar und gut so ist.
Mache ich vorher Clear() ist das Listview leer und wird nicht mehr mit Daten gefüllt.
Also irgendwas ist da mit Clear...

Was mache ich falsch?
private Nachricht | Beiträge des Benutzers
Aratar
myCSharp.de - Member



Dabei seit:
Beiträge: 126

beantworten | zitieren | melden

Du möchtest ja die Items löschen, deshalb musst du:

listBuchdat.Items.Clear();

und nicht listBuchdat.Clear().

Mfg
Aratar
private Nachricht | Beiträge des Benutzers
schuppsl
myCSharp.de - Member



Dabei seit:
Beiträge: 784

Themenstarter:

beantworten | zitieren | melden

DANKEEEEEEEE
private Nachricht | Beiträge des Benutzers