Ich habe zwei Formulare, die miteinander interagieren müssen. Das übergeordnete Formular verfügt über 4 Felder und eine Schaltfläche zum Hinzufügen, die Daten aus jedem Feld in einer Instanz eines Klassenobjekts speichert. Nach dem Speichern in einem Objekt wird das Objekt in einer Listbox gespeichert, die das untergeordnete Formular enthält. Ich habe ein benutzerdefiniertes Ereignis erstellt, um mit diesem Zeug umzugehen, aber ich mache sicherlich etwas falsch.Die wichtigsten Formularfelder zeigen nur die Daten des ersten in der Listbox ausgewählten Elements an.
Wenn beide Fenster geöffnet sind und sich Daten in der Listbox befinden, wird das Element, das aus der untergeordneten Formularliste ausgewählt wird, die übergeordneten Formularfelder mit den Daten aus diesem Objekt gefüllt. Wenn ich meinen Code ausprobiere, sind nur die ersten Daten korrekt in die richtigen Felder eingetragen. Wenn ich nach der ersten Auswahl auf ein anderes Element klicke, werden die Hauptformularfelder überhaupt nicht aktualisiert.
Spezifisch für mein Problem des Kind Form hat die folgenden Codes:
public EventHandler ListBoxItemClicked;
private void pPotionList_SelectedIndexChanged(object sender, EventArgs e)
{
PotionForm tempMain = new PotionForm(); //this was a test, nothing changed
pPotionList.SelectionMode = SelectionMode.One;
if (ListBoxItemClicked != null)
{
ListBoxItemClicked(this, new EventArgs());
}
tempMain.Refresh(); // this too
}
Die Mutter Form hat diesen Codes
private void pListDisplay_Click(object sender, EventArgs e)
{
PotionList secForm = new PotionList();
secForm.secFormBox.DataSource = potionBindList;
PotionListChanged += secForm.HandlePotionListChanged;
secForm.ChildPotionListChanged += HandleChildPotionListChanged;
secForm.ListBoxItemClicked += HandleListBoxItemClicked; //this line
secForm.Show();
}
public void HandleListBoxItemClicked(object sender, EventArgs e)
{
pTypeInput.SelectedItem = aPotion._type;
pMagInput.Value = aPotion._magnitude;
pNameInput.Text = aPotion._name;
pBonusInput.Checked = aPotion._bonus;
}
Ich bin derzeit mit Visual Studio Gemeinschaft 2015, wenn diese relevant ist.
Benötigen Sie weitere Informationen !: Was ist 'PotionForm tempMain'? Wie lautet der Name der übergeordneten 'ListBox'? Was ist 'secForm.secFormBox'? Von welcher Art ist 'trankBindList'? –
Wo wird 'aPotion' initialisiert? –
'PotionForm tempMain' Dies ist eine Instanz des übergeordneten Formulars, das ich versuchte, das Hauptformular zu aktualisieren, sodass das ausgewählte Element mit den neuen Informationen aktualisiert werden konnte. 'secForm.secFormBox' Dies ist eine Instanz des untergeordneten Formulars und des Listenfelds des untergeordneten Formulars. 'potionBindList' Dies ist eine' BindingList ' –
NerveSinge