Laden...

Welche Parameter verlangt List.AddRange?

Erstellt von Sindelfinger vor 4 Jahren Letzter Beitrag vor 4 Jahren 1.154 Views
S
Sindelfinger Themenstarter:in
39 Beiträge seit 2019
vor 4 Jahren
Welche Parameter verlangt List.AddRange?

Liebes Forum,

bevor ich meine Frage stelle möchte ich einmal anmerken, daß ich bis jetzt jedes Problem durch die Boardsuche hier lösen konnte. Auch gefällt mir der Umgangston sehr gut.

Antworten wie: "Google" oder "such doch mal richtig" sind hier spärlich bis gar nicht zu finden.

Bei meinem aktuellen Problem habe ich nirgendwo eine Lösung gefunden. Könnte auch daran liegen, daß ich eventuell die falschen Suchbegriffe verwende.

Nun zum eigentlichen Problem:

Ich habe eine ListView (zum Abkürzen der Tippselei habe ich ihr den Namen "lv" gegeben) und möchte diese füllen. Das ist mir bis jetzt mit SubItems usw noch nie gelungen. Jetzt bin ich auf die AddRange - Methode gestoßen und daß man dort wohl eine Auflistung von Items mit einem Schlag einfügen kann. Dafür fehlt mir aber die Syntax (und ich habe schon sehr viele Versuche hinter mir).

public partial class Testform : Form
    {
        public Testform()
        {
            InitializeComponent();
        }

        private void Testform_Load(object sender, EventArgs e)
        {
            lv.View = View.List;
            lv.LabelEdit = true;
            lv.AllowColumnReorder = false;
            lv.CheckBoxes = true;
            lv.GridLines = true;

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

            for (int i = 0; i < 4; i++)
            {
                ListViewItem neu = new ListViewItem();
                neu.SubItems.Add((i * 10).ToString());
                neu.SubItems.Add((i * 100).ToString());

                arrayItems.Add(neu);

                


            }
           // Genau HIER finde ich nicht die richtige Syntax

??????????            lv.Items.AddRange(new ListViewItem[arrayItems]);

           // Ende von nicht gefunden.
        }
    }

Wer hilft einem dämlichen alten Sack? Für Eure Hilfe schonmal herzlichen Dank im voraus.

2 stupid 4 chess? No way.
2 stupid 4 C#? It seems so X(

3.511 Beiträge seit 2005
vor 4 Jahren

Moin,

siehe: ListViewItemCollection

Warum erstellst du erst eine List<ListViewItem> und fügst die Elemente dort ein? Warum nicht in der Schleife gleich per "lv.Items.Add(neu)". Die Methode AddRange nimmt ein Array ListViewItem entgegen. Deine markierte Zeile müsste also lauten "lv.Items.AddRange(arrayItems.ToArray())".

Gruß
Khalid

"Jedes Ding hat drei Seiten, eine positive, eine negative und eine komische." (Karl Valentin)

S
Sindelfinger Themenstarter:in
39 Beiträge seit 2019
vor 4 Jahren

Hey Khalid,

erstmal vielen Dank für Deine schnelle Antwort.

Diese Version ist ein weiterer Versuch, daß die dämlichen SubItems überhaupt einmal angezeigt werden. Ich habe schon etliche Beispiele versucht umzusetzen, aber es zeigt sich NIX.

Auch durch Deine (herzlichen Dank nochmal) Korrektur der Syntax zeigen sich nur leere Items mit den Checkboxen vorne dran.

2 stupid 4 chess? No way.
2 stupid 4 C#? It seems so X(

5.657 Beiträge seit 2006
vor 4 Jahren

zeigen sich nur leere Items mit den Checkboxen vorne dran.

Du gibst ja auch nirgendwo einen Text an. Was sollte da auch angezeigt werden?

Verwende den ListViewItem(String)-Constructor oder setze die Text-Eigenschaft entsprechend.

Weeks of programming can save you hours of planning

4.931 Beiträge seit 2008
vor 4 Jahren

Und noch als Anmerkung: die SubItems werden nur im View-Mode View.Details (Spaltenansicht) angezeigt (so wie man die Ansichten auch vom Windows Explorer kennt)...

S
Sindelfinger Themenstarter:in
39 Beiträge seit 2019
vor 4 Jahren

Du gibst ja auch nirgendwo einen Text an. Was sollte da auch angezeigt werden

Herzlichen Dank. Klar - das hätte ich auch selbst sehen können wenn ich weniger verzweifelt gewesen wäre. 👍

Und noch als Anmerkung: die SubItems werden nur im View-Mode View.Details (Spaltenansicht) angezeigt (so wie man die Ansichten auch vom Windows Explorer kennt)...

Ja und wenn man das zur Laufzeit mit "List" überschreibt, dann arbeitet man auch schön im Kreis. 😄. Vielen herzlichen Dank für diesen Hinweis.

Das Problem ist hiermit gelöst und ich bedanke mich herzlich bei allen für die fruchtbaren Kommentare.

2 stupid 4 chess? No way.
2 stupid 4 C#? It seems so X(