Stellen Sie sich die Situation vor, dass ich zwei Windows-Formulare habe, zum Beispiel F1
y F2
. Nach der Verwendung F1
habe ich jetzt angerufen F2.ShowDialog()
. Dies bringt F2
auch auf dem Bildschirm. Nun, da beide Formulare sichtbar sind, wie kann ich Daten von F1
a F2
? Außerdem, sobald F2
(ein modaler Dialog) beendet ist, wie kann ich die Daten an F1
?
Antworten
Zu viele Anzeigen?int x=10;
Form1 f2 = new Form1(x);
f2.ShowDialog();
Dies wird in das Formular geschrieben, das den Wert übergeben wird. Um diesen Wert zu erhalten, müssen Sie einen neuen Konstruktor in dem erhaltenen Formular erstellen
und das wird so sein
public Form2(int x)
{
InitializeComponent();
this.x = x;
}
und wird in der ersten Form bemerkt werden, wenn Sie die Instanz von form2 erstellen, haben Sie zwei Auswahlmöglichkeiten, von denen eine Ihnen erlaubt, den Wert zu übergeben
Hat jemand in Erwägung gezogen, den Wert einfach im Tag-Attribut an das Formular zu übergeben?
Form newForm = new form();
newForm.Tag = passValue;
newform.showmodal();
wenn newform angezeigt wird, kann die Lade- (oder jede andere) Routine die Daten im Tag verwenden
public void load()
{
if (this.Tag.length > 0)
{
// do something with the data
}
}
Nehmen wir an, Sie haben ein TextBox-Steuerelement in Form1 und möchten den Wert davon an Form2 übergeben und Form2 modal anzeigen.
In Form1:
private void ShowForm2()
{
string value = TheTextBox.Text;
Form2 newForm = new Form2();
newForm.TheValue = value;
newForm.ShowDialog();
}
In Form2:
private string _theValue;
public string TheValue
{
get
{
return _theValue;
}
set
{
_theValue = value;
// do something with _theValue so that it
// appears in the UI
}
}
Dies ist ein sehr einfacher Ansatz und möglicherweise nicht der beste für eine größere Anwendung (in diesem Fall sollten Sie das MVC-Muster oder Ähnliches studieren). Der wichtigste Punkt ist, dass Sie die Dinge in der folgenden Reihenfolge tun:
- Erstellen Sie eine Instanz des Formulars zu anzeigen
- Daten in dieses neue Formular übertragen Instanz
- Das Formular anzeigen
Wenn Sie ein Formular modal anzeigen, wird der Code im aufrufenden Formular blockiert, bis das neue Formular geschlossen wird. Sie können also dort keinen Code haben, der auf einfache Weise Informationen an das neue Formular überträgt (es ist möglich, aber unnötig kompliziert).
[Bearbeiten: die Eigenschaftsmethoden in Form2 wurden erweitert, um klarer zu sein]
- See previous answers
- Weitere Antworten anzeigen