2016-11-21 4 views
0

Also habe ich nachgedacht.Korrekter Weg, um Informationen zu übergeben

Wenn Sie ein Formular erstellen und verwenden Sie applicaton.run (form1). Und innerhalb dieser Form1 öffnest du ein anderes form2 und versteckst form1. In form2 öffnen Sie ein anderes Formular3 und verstecken Formular 2. Aber in Formular3 möchten Sie die Info (Variablen) in Form1, die nicht zugänglich ist? korrigiere mich, wenn ich falsch liege.

Ich habe über mehrere Möglichkeiten nachgedacht, aber ich denke nicht, dass sie der richtige Weg sind.

  1. Speichern Sie die Informationen aus Form1 in einer statischen Klasse.

  2. alle Formen erstellen Objekte in der Hauptklasse und in der Nähe/sie 1 von 1.

  3. Pass the info (Variablen) von form1 zu form2 zu form3 laufen.

Was ist der richtige Weg, dies zu tun?

Es tut mir leid, wenn es schwer zu folgen ist.

Antwort

0

Es kommt darauf an. Wenn es sich um Dialogformulare handelt, die als Modale angezeigt werden und es nur ein oder zwei Variablen gibt, ist es oft in Ordnung, die Werte als Eigenschaften in der Klasse für dieses Formular zu speichern und sie auf die gleiche Weise wie DialogResult in einem Standard-MessageBox-Formular zu untersuchen.

Wenn es komplizierter ist oder die Formulare offen bleiben, sollten Sie ein Objekt erstellen und es an die Formulare übergeben. Remember-Objekte werden als Verweis übergeben. Wenn Sie also eine Klasse mit dem Namen MyDataContainer erstellen und dann eine Instanz im Hauptformular erstellen, übergeben Sie diese Instanz an die anderen Formulare. In jedem dieser Formulare ist dieselbe Instanz enthalten. Wenn Form3 diese Instanz aktualisiert, können die anderen Formulare diese Änderungen ebenfalls sehen.

Ps: Vermeiden Sie den statischen Weg, es gibt sehr selten einen gültigen Anwendungsfall dafür.

+0

Ja, verstanden. Ich zögere immer, welchen Weg ich wählen sollte. Das macht die Dinge ein bisschen leichter. –

0

Es gibt wirklich keinen "richtigen" Weg, es zu tun. Alle Möglichkeiten, die du erwähnt hast, könnten funktionieren. Ein weiterer Weg wäre, eine statische Liste aller Formulare beizubehalten. Auf diese Weise kann jedes Formular ein anderes Formular finden, indem es die Liste danach sucht. Genauer gesagt könnte sich ein Dictionary<string,Form>, in dem String ein eindeutiger Bezeichner für das Formular ist, als nützlich erweisen.

Das heißt, es kommt wirklich auf Ihre Design-Ziele. Normalerweise empfiehlt es sich, mit der einfachsten Lösung zu arbeiten, die Ihre Entwurfsziele erfüllt.

+0

Vielen Dank, das erleichtert meine Gedanken! Ich werde die einfachste Lösung verwenden, die meine Designziele erfüllt. –

+0

@tuyen. Freut mich, Ihnen behilflich zu sein. Ein upvote würde geschätzt werden. –

+0

Würde gerne, aber ich habe nicht genug Rep für sie öffentlich zu zeigen. Es sagt, es ist aufgezeichnet. –

Verwandte Themen