[C#]listView

07/23/2011 00:26 CranK™#1
Hey Leute, wie der Titel schon sagt brauche ich Hilfe beim listView in C#.

Mein Problem ist folgendes:

Ich will einen Password Manager machen, und das Passwort usw. über eine andere Form in die listView von Form1 einfügen.

Das funktioniert soweit auch, jedoch wenn ich nun ein zweites einfüge, dann wird die erste Zeile geändert, da ich das gleiche item noch mals einfüge nur mit anderem Text oder so.

Hier ist mal der Source:

Code:
            Form1 frm1 = new Form1();
            ListViewItem [COLOR="Red"]item [/COLOR]= new ListViewItem(textBox3.Text, frm1.listView1.Items.Count + 1);
            [COLOR="Red"]item[/COLOR].SubItems.Add(textBox1.Text);
            [COLOR="Red"]item[/COLOR].SubItems.Add(textBox2.Text);
            frm1.listView1.Items.Add([COLOR="Red"]item[/COLOR]);
            frm1.Show();
            this.Close();
Das rot Markierte ist mein Problem.
Ich will, dass der Name von dem item immer die aktuelle anzahl der Zeilen von der listView + 1.
Beispiel:
Bei der ersten Spalte sieht das wie folgt aus:

Code:
            Form1 frm1 = new Form1();
            ListViewItem [COLOR="Red"]item0 [/COLOR]= new ListViewItem(textBox3.Text, frm1.listView1.Items.Count + 1);
            [COLOR="Red"]item0[/COLOR].SubItems.Add(textBox1.Text);
            [COLOR="Red"]item0[/COLOR].SubItems.Add(textBox2.Text);
            frm1.listView1.Items.Add([COLOR="Red"]item0[/COLOR]);
            frm1.Show();
            this.Close();
Bei der zweiten:

Code:
            Form1 frm1 = new Form1();
            ListViewItem [COLOR="Red"]item1 [/COLOR]= new ListViewItem(textBox3.Text, frm1.listView1.Items.Count + 1);
            [COLOR="Red"]item1[/COLOR].SubItems.Add(textBox1.Text);
            [COLOR="Red"]item1[/COLOR].SubItems.Add(textBox2.Text);
            frm1.listView1.Items.Add([COLOR="Red"]item1[/COLOR]);
            frm1.Show();
            this.Close();
Nur ich will dass des automatisch gemacht wird und ich da nicht was weiß ich wie viel Zeilen Code schreiben muss.

Ich hoffe ihr habt verstanden was ich meine und könnt mir bei meinem Problemchen helfen.

Danke im Voraus.

MfG CranK™
07/23/2011 11:48 xNopex#2
Geht nicht. Stichwort 'Array' bzw. klüger programmieren.

EDIT: Wenns dynamisch sein soll, dann natürlich kein Array. Dynamische Alternative verwenden. Liste, Schlange, etc.
07/23/2011 12:26 CranK™#3
Quote:
Originally Posted by xNopex View Post
Geht nicht. Stichwort 'Array' bzw. klüger programmieren.

EDIT: Wenns dynamisch sein soll, dann natürlich kein Array. Dynamische Alternative verwenden. Liste, Schlange, etc.
Hmm hätteste vllt ein Beispiel für mich?
Bin eher noch so der C# Anfänger...
07/23/2011 17:12 Muddy Waters#4
Ich verstehe nicht ganz, warum du in deinem Code Schnipsel jedes mal eine neue Instanz von Form1 instantiierst. Dass die ListView in dieser neuen Instanz nach Aufruf des standard Konstruktors jeweils erstmal leer ist, sollte eigentlich klar sein.

Aus meiner Sicht ist dein Problem die Neuinstantiierung von Form1 in deiner neuen Form. Ich glaube was du eigentlich willst, ist eine Referenz auf Form1. Die müsstest du aber dem Konstruktor deiner zweiten Form bei der Instantiierung übergeben, nur dann kannst du auch auf die Member von Form1 zugreifen, sofern diese public sind.
Aber vielleicht ist es das auch nicht und ich habe dein Problem einfach nicht verstanden... :rolleyes:

Noch ein Tipp: auch wenn ich noch nicht genau einsehen kann, was du letztendlich anstrebst, aber wenn du vorhast das ganze ein wenig objektorientierter anzugehen und Wert legst auf viele Möglichkeiten bezüglich der Optik, empfehle ich dir die [Only registered and activated users can see links. Click Here To Register...] Klassenbibliothek. Damit habe ich bei meinem letzten Projekt recht gute Erfahrungen gemacht.

Vorteil: du kannst damit fast alles erdenkliche machen.
Nachteil: das ist alles recht komplex und der Einarbeitungsaufwand ist verhältnismäßig groß.

LG
Muddy
07/28/2011 07:00 xNopex#5
Hab den Thread ganz vergessen..
[Only registered and activated users can see links. Click Here To Register...]
Wenn du zusätzliche Funktionen brauchst, schnell selber schreiben:
Liste (Datenstruktur)

Bsp:

Code:
List<ListViewItem> listViewItem_list;
listViewItem_list.Add(new ListViewItem(...));
Das ist jedoch total schwachsinnig. Klüger wäre so etwas:

Code:
public void AddNewListViewItem(ListViewItem item)
{
    this.listView1.Items.Add(item);
}