Übergabe von Daten zwischen Windows Forms
In Windows Forms-Anwendungen ist es häufig erforderlich, Daten zwischen mehreren Formularen auszutauschen. Wenn ein Formular ein anderes öffnet, muss es möglicherweise bestimmte Informationen weitergeben, damit das neue Formular verwendet werden kann. Ein gängiger Ansatz, dies zu erreichen, sind Delegaten.
Problembeschreibung
In einem bestimmten Szenario verfügt ein Hauptformular über eine Schaltfläche mit dem Namen „Einstellungen“, die ein untergeordnetes Formular öffnet namens „Einstellungsformular“. Die Anforderung besteht darin, beim Öffnen eine Variable an das Einstellungsformular zu übergeben, damit der Wert der Variablen im neuen Formular angezeigt werden kann.
Delegierter Ansatz
Zu lösen Um dieses Problem zu lösen, können Sie im Hauptformular einen Delegaten definieren, der einen benutzerdefinierten Ereignishandler akzeptiert. Der Ereignishandler wiederum übergibt die Variable über eine Ereignisargumentklasse an das untergeordnete Formular.
In dem von Ihnen bereitgestellten Codeausschnitt sind der folgende Delegat und das folgende Ereignis in der MainForm-Klasse definiert:
public partial class MainForm : Form { public delegate void PageInfoHandler(object sender, PageInfoEventArgs e); public event PageInfoHandler PageInfoRetrieved; ... }
Die PageInfoEventArgs-Klasse muss so definiert sein, dass sie den Variablenwert enthält:
public class PageInfoEventArgs : EventArgs { public string SomeString; public PageInfoEventArgs(string someString) { SomeString = someString; } }
Wenn im Hauptmenü auf die Schaltfläche „Einstellungen“ geklickt wird Formular wird eine Instanz von PageInfoEventArgs mit dem Variablenwert erstellt und das PageInfoRetrieved-Ereignis ausgelöst. Der Ereignishandler im Einstellungsformular empfängt dann die Variable und kann sie zur Anzeige des Werts verwenden.
Konstruktoransatz
Ein anderer Ansatz besteht darin, die Variable als zu übergeben Parameter an den Konstruktor des Einstellungsformulars. Das Formular kann dann den Konstruktorparameter in seiner Logik verwenden.
Zum Beispiel könnten Sie Folgendes haben:
public class SettingsForm : Form { private string _variable; public SettingsForm(string variable) { _variable = variable; } ... // Use _variable as needed }
Im MainForm würden Sie das Einstellungsformular wie folgt erstellen:
SettingsForm settingsForm = new SettingsForm("value"); settingsForm.ShowDialog();
Das obige ist der detaillierte Inhalt vonWie übertrage ich Daten effizient zwischen Windows Forms?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!