[C#] ListView ein Item hinzufügen (Objekt eigener Klasse)

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Affje800, 9. September 2011 .

  1. 9. September 2011
    ListView ein Item hinzufügen (Objekt eigener Klasse)

    Hallo,

    ist es möglich, auch "nicht normale" Objekte, zu einem listViewItem hinzuzufügen? Ich habe eine Klasse mit folgenden Variablen:

    Code:
    public int [] xValues, yValues, rings; 
    
    public string title;
    public String name, location;
    public String disziplin;
    public String date;
    public int diameter;
    public int disz_number;
    

    Ich habe diese Objekte bisher einer ListBox hinzugefügt, da kann ich das ja einwandfrei einfügen und per (Klassenname)listBoxIrgendwas.SelectedItem etc. wieder auslesen.
    Da mir aber das ListView-Objekt einfach viel besser gefällt und man damit deutlich mehr Möglichkeiten hat, würde ich das ganze jetzt gerne auf das listView-Objekt umstellen.

    Die meisten Variablen kann ich ja auch prima als Subitems hinzufügen, klappt bestens. Nur wie mache ich das mit von der "Norm" abweichenden Daten wie Arrays? Zugreifen tue ich dann in etwa so:
    Code:
    //Elemente wieder als Objekte 
    
    Person[] persons = new Person[listView.Items.Count]; 
    
    for (int i = 0; i < listView.Items.Count; i++)
    {
    Person pe = new Person(listView.Items[i].SubItems[0].Text, listView.Items[i].SubItems[1].Text, Convert.ToInt32(listView.Items[i].SubItems[2].Text));
    persons[i] = pe;
    }
    
    Gibt es da eine Möglichkeit die Arrays dem listView hinzuzufügen oder muss ich pfuschen, d.h. irgendwo anders unterbringen? Gibt es auch eine Möglichkeit, die Klassen-Objekte "direkt" hinzuzufügen wie beim listView?

    Ich habe testweise jetzt eine zweite listView hinzugefügt, um rumzuprobieren, aber irgendwie will das einfach nicht.
    Das Objekt könnte ich ja dann wieder gut zusammenbauen, aber eben nur mit "einfachen" Variablen wie int, String, boolean usw.

    Ein Array krieg ich einfach nicht ein listViewItem, ich habe schon pobiert eine neue Column zu erstellen, die Werte des Arrays darein zu schreiben und später den String wieder zu zerlegen, aber Columns kann man auch leider nicht unsichtbar setzen.

    Mit einer ListBox geht das alles so einfach...hinzufügen, beim Auslesen einfach in die gewünsche Klasse casten und gut ist.

    Ich habe das jetzt so gelöst, dass ich eine listBox habe und diese unsichtbar gesetzt habe. Wenn ich nun den Index in der listView ändere, setze ich den Index in der listBox auf denselben Index.
    Aber das Problem bei dieser Methode ist, dass ich die listView sortieren möchte und die Indizes somit nicht mehr übereinstimmen.


    Vorschläge?
     
  2. 23. September 2011
    AW: ListView ein Item hinzufügen (Objekt eigener Klasse)

    Du kannst doch die Tag Eigenschaft eines ListViewItem verwenden. Dort kannst du Zusatzinformationen abspeichern oder sogar dein komplettes Objekt dort ablegen

    ListViewItem.Tag-Eigenschaft (System.Windows.Forms)
     
  3. 23. September 2011
    AW: ListView ein Item hinzufügen (Objekt eigener Klasse)

    Hallo,

    danke für die Antwort, aber ich habe glaub ein komplett falsches Konstrukt verwendet.
    Ich habe es jetzt mit einer Liste gemacht und greife eben auf denselben Index zu, sprich

    ...List[listView.SelectedIndices[0]]...

    Klappt bisher eigentlich ganz gut, ich werde mir das mit dem Tag jedoch trotzdem anschauen, da ich mit meiner "Lösung" Probleme habe, wenn ich die Liste sortieren will, sprich ich sortiere Sie im listView-Objekt per Klick auf die Spalte, wie man es eben kennt, aber dann bekomme ich ja den falschen Index zurück.

    Danke nochmals.
     
  4. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.