2016-06-02 5 views
1

Ich möchte ein weiteres Mitglied zu einer Liste hinzufügen (in MainForm), wenn auf eine Schaltfläche (in FormA) geklickt wird.Kann ich eine Liste <myclass> an ein Button-Click-Ereignis übergeben?

Ich habe eine Klasse namens "Trips", die zwei String-Mitglieder zum Speichern enthält.

habe ich eine Liste in der Mainform:

List<Trips> alltrip = new List<Trips>() { new Trips("Trip 1", "March"), 
              new Trips("Trip 2", "May")}; 

Ich habe die Liste zu FormA und dann dachte ich, dass ich alltrip in der Schaltfläche Click-Ereignis verwenden können. Aber es gab einen Fehler zurück und sagte, dass es alltrip nicht finden konnte, also versuchte ich, es an die Taste wie folgend weiterzugeben.

Trips newTrip = new Trips(); 
    private void AddTripConfirm_Click(object sender, EventArgs e, List<Trips> alltrip) 
    {                               //I add the List here 
     newTrip.Name = AddTripNametxt.Text; 
     newTrip.Time = AddTripTimetxt.Text; 
     alltrip.Add(newTrip); 
    } 

Bisher sah es gut für mich, aber dann kam ein anderer Fehler in dieser Zeile in der Designer.cs:

this.AddTripConfirm.Click += new System.EventHandler(this.AddTripConfirm_Click); 

Er sagt, dass „keine Überlastung für‚AddTripConfirm_click‘Streichhölzer delegieren‚System .EventHandler. "" Da ich noch ziemlich neu in C# bin, kann ich mir keine Lösung vorstellen und habe mich bemüht, aus ähnlichen Fragen eine befriedigende Antwort zu finden.

Bitte helfen. Vielen Dank.

+0

Wie haben Sie allTrips an FormA übergeben? Sie sollten einen Verweis darauf im Formular speichern, damit Sie später darauf zugreifen können. –

Antwort

1

Sie sagten, Sie haben die Liste an FormA übergeben. Ich nehme an, du hast das über den Konstruktor gemacht.

speichern So einfach diese Liste in einer Membervariable Ihrer FormA:

public partial class FormA : Form 
{ 
    private List<Trips> _allTrips; // a member variable 

    public FormA(List<Trips> allTrips) 
    { 
     // store allTrips in _allTrips 
     _allTrips = allTrips; 
     InitializeComponents(); 
    } 

Jetzt können Sie die Liste über die Membervariable in Ihrem Event-Handler zugreifen:

private void AddTripConfirm_Click(object sender, EventArgs e) 
{                          
    Trips newTrip = new Trips(); 
    newTrip.Name = AddTripNametxt.Text; 
    newTrip.Time = AddTripTimetxt.Text; 
    _allTrips.Add(newTrip); // use the member _allTrips 
} 

Seit Sie speichern einen Verweis auf die Liste, die hinzugefügte Reise ist auch in Ihrem Hauptformular verfügbar.

+0

Danke für die klare Antwort. Es klappt! – Lei

0

Angenommen, Sie alltrip zu FromA in den Konstruktor übergeben Sie müssen eine Klasse Variable hinzuzufügen, darauf zuzugreifen heißt:

private List<Trips> _alltrip; 

public FormA(List<Trips> alltrip) 
{ 
    _alltrip = alltrip; 
} 

Dann, wenn Sie die Variable nur _alltrip verwenden verwenden müssen.

Verwandte Themen