Laden...

Objekt/Liste von einem Form zum anderen "by ref" übergeben

Erstellt von Paddyb vor 11 Jahren Letzter Beitrag vor 11 Jahren 1.462 Views
Thema geschlossen
P
Paddyb Themenstarter:in
2 Beiträge seit 2010
vor 11 Jahren
Objekt/Liste von einem Form zum anderen "by ref" übergeben

Hey,

ich habe folgendes Problem:

Ich habe einen DataGrid welcher an eine BindingList gebunden ist.

public static BindingList<File> Files = new BindingList<File>();

Das hinzufügen von Elementen funktioniert folgendermaßen:


private void btnAdd_Click(object sender, System.EventArgs e)
{
   var frmAdd = new frmAddEdit(this, "Add File");
   frmAdd.Show();
}

Die Form frmAddEdit ruft dann folgende die Funktion auf.


public void AddRow(File file)
{
    Files.Add(file);        
}

Jetzt ist mein Problem, dass ich über frmAddEdit auch Items editieren möchte, also bekommt frmAddEdit einen weiteren Konstruktor, dem ich eine Instanz von File mitgeben kann.


private void btnEdit_Click(object sender, EventArgs e)
{
    if (dataFiles.Rows.Count > 0 && dataFiles.CurrentCell.ColumnIndex != 0)
    {
        int id = Convert.ToInt32(dataFiles[0, dataFiles.CurrentCell.RowIndex].Value);
        var file = Files.FirstOrDefault(w => w.ID == id);

        var frmAdd = new frmAddEdit(this, file, "Edit File");
        frmAdd.Show();
    }
}

Aber nun komme ich nicht weiter.
frmAddEdit ruft dann wieder AddRow auf und eine weitere Zeile wird hinzugefügt.
Am besten wäre es doch wenn ich Files[x] by ref übergebe, welches ich dann beliebig ändern kann?
Bin ich total auf dem Holzweg? Gibt es auch einfachere bzw. bessere Möglichkeiten?

Vielen Dank für die Hilfe!
Mfg Paddy

S
902 Beiträge seit 2007
vor 11 Jahren

Hi,

prinzipiell kannst du natürlich das zu bearbeitende Item mitgeben, da spricht ja erstmal nichts dagegen. Was macht denn die Form noch alles? Zeigt sie auch eine Liste an? Wenn nicht, bräuchtest du die Liste ja auch nicht übergeben, sondern die Form gibt das neue Item einfach zurück, und der Aufrufer kann dann das Item hinzufügen.

mfg
serial

49.485 Beiträge seit 2005
vor 11 Jahren

Hallo Paddyb,

egal, was dein Form sonst noch tut, dein Problem ist auch nur eine Variante von [FAQ] Kommunikation von 2 Forms und fällt daher unter [Hinweis] Wie poste ich richtig? Punkt 1.1 und 1.1.1. Auch ansonsten solltest du dir nochmal die Grundlagen anschauen, dann siehst du, dass die meisten Typen eh Referenztypen sind, so dass eine explizite Übergabe by ref fast nie nötig ist (und im Zusammenhang mit Forms auch gar nicht sinnvoll möglich ist).

herbivore

Thema geschlossen