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
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
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