Benutzer mit den meisten Antworten
ListView an andere Form übergeben

Frage
-
Hallo. Ich habe auf der Form1 eine ListView, welche auch an die Form2 über den Konstruktor übergeben möchte. Meine Idee:
public partial class Form2 : Form { ListView lv; public Form2(ListView i) { InitializeComponent(); lv = i; } private void Form2_Load(object sender, EventArgs e) { this.listView1 = lv; } }
Ich möchte die kompletten Daten der ListView der Form1 auf die Form2 übertragen. Wie geht das?
Antworten
-
Hallo,
das weiter reichen des Controls selbst ist oftmals eine schlechte Idee, da diese mit der Form verknüpft sind auf der sie erstellt wurden. Daher empfehle ich dir nur die Daten an die 2. Form zu übergeben.
Das würde ich auch über eine Eigenschaft machen:
public ListView.ListViewItemCollection Items { get { return this.listView1.Items; } set { this.listView1.Items.Clear(); foreach (ListViewItem item in value) { this.listView1.Items.Add((ListViewItem)item.Clone());//Clone um neue Items für die 2. ListView zu erzeugen } } }
In der Form 1 rufst du die neue Form dann wie folgt auf:var frm = new Form2(); frm.Items = this.listView1.Items; frm.ShowDialog();
Tom Lambert - .NET (C#) MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Moderator Freitag, 12. Februar 2016 15:52
- Als Antwort markiert Aleksander Chalabashiev Dienstag, 1. März 2016 09:47
Alle Antworten
-
Hi,
warum unbedingt im Konstruktor?
Und warum eine Variable und keine (öffentliche) Eigenschaft?
Ersetz
ListView lv;
mal durch
public ListView lv { get; set; }
und setz dann diese Eigenschaft vor dem Anzeigen von Form2.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Habe ich jetzt gemacht und es funktioniert nicht :(
public ListView lv { get; set; } private void Form2_Load(object sender, EventArgs e) { this.listView1 = lv; } private void toolStripLabel1_Click(object sender, EventArgs e) { Form2 a = new Form2(HauptPfad, "Information.xml"); a.lv = this.listView1; a.Show(); }
-
Hallo,
das weiter reichen des Controls selbst ist oftmals eine schlechte Idee, da diese mit der Form verknüpft sind auf der sie erstellt wurden. Daher empfehle ich dir nur die Daten an die 2. Form zu übergeben.
Das würde ich auch über eine Eigenschaft machen:
public ListView.ListViewItemCollection Items { get { return this.listView1.Items; } set { this.listView1.Items.Clear(); foreach (ListViewItem item in value) { this.listView1.Items.Add((ListViewItem)item.Clone());//Clone um neue Items für die 2. ListView zu erzeugen } } }
In der Form 1 rufst du die neue Form dann wie folgt auf:var frm = new Form2(); frm.Items = this.listView1.Items; frm.ShowDialog();
Tom Lambert - .NET (C#) MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Moderator Freitag, 12. Februar 2016 15:52
- Als Antwort markiert Aleksander Chalabashiev Dienstag, 1. März 2016 09:47