2012-04-06 10 views
0

Ich versuche, eine E-Mail-Formular aus einem anderen Thread in die ListView Form1 einzufügen, aber irgendwie funktioniert es nicht. Hier ist mein Code:Einfügen in Listenansicht von einem anderen Thread

private delegate void InsertIntoListDelegate(string email); 
    private void InsertIntoList(string email) 
    { 
     if (f1.listView1.InvokeRequired) 
     { 
      f1.listView1.Invoke(new InsertIntoListDelegate(InsertIntoList), email); 
     } 
     else 
     { 
      f1.listView1.Items.Add(email); 
      f1.listView1.Refresh(); 
     } 
    } 

Wenn Sie mir helfen können dann danke.

+0

'es Werk' nicht, was nicht funktioniert? Welchen Fehler bekommst du? –

+0

Keine Fehler, es fügt nichts in Listview hinzu. – Jason

+0

if (! F1.InvokeRequired) neue Exception werfen ("Invalid form object"); –

Antwort

1

Versuchen Sie folgendes:

private delegate void InsertIntoListDelegate(string email); 
    public void InsertIntoList(string email) 
    { 
     if(InvokeRequired) 
     { 
      Invoke(new InsertIntoListDelegate(InsertIntoList), email); 
     } 
     else 
     { 
      f1.listView1.Items.Add(email); 
      f1.listView1.Refresh(); 
     } 
    } 

InsertIntoList Mitglied der umschließenden Steuerung ist so auf, dass die Steuerung nicht die Listenansicht aufgerufen werden soll.

diesen sehr einfachen Test Versuchen Sie, die für mich funktioniert:

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

    private delegate void InsertIntoListDelegate(string email); 

    public void InsertIntoList(string email) 
    { 
     if(InvokeRequired) 
     { 
      Invoke(new InsertIntoListDelegate(InsertIntoList), email); 
     } 
     else 
     { 
      listView1.Items.Add(email); 
     } 
    } 

    private void button1_Click(object sender, System.EventArgs e) 
    { 
     Task.Factory.StartNew(() => InsertIntoList("test")); 
    } 
} 
+0

Hey Phil, irgendwie klappt es nicht. Oder wenn es funktioniert, dann aktualisiert es die Listview nicht, weil ich nichts darin sehe :( – Jason

+0

Hm, ich weiß nicht, warum es nicht funktioniert hat, aber ich habe listview in richtextbox geändert und es funktioniert einwandfrei . – Jason