6 Stimmen

Wie kann ich Werte von einem Formular an ein anderes übergeben?

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 ?

3voto

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

3voto

woodseynz Punkte 31

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

2voto

Anand Shah Punkte 13989

Fügen Sie diesen Code an der entsprechenden Stelle in Ihrem from f1 ein.

Form f2 = new Form();
f2.ShowDialog();

HTH

1voto

Fredrik Mörk Punkte 151006

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:

  1. Erstellen Sie eine Instanz des Formulars zu anzeigen
  2. Daten in dieses neue Formular übertragen Instanz
  3. 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]

0voto

Mark Carpenter Punkte 16847

Wenn Sie nur Daten an Ihr untergeordnetes Dialogfeld übertragen möchten, sollten Sie dem Konstruktor des untergeordneten Dialogfelds Parameter hinzufügen und dann ShowDialog() aufrufen. Die Übergabe von Daten in die andere Richtung ist allerdings etwas schwieriger.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X