web-dev-qa-db-fra.com

Passer la valeur du formulaire de dialogue au formulaire principal

Duplicata possible:
Comment passer un objet de form1 à form2 et revenir à form1?

Je suis habitué à passer des variables entre des formulaires Windows en les passant simplement en paramètre. Maintenant, j'ai un formulaire qui est déjà ouvert (appelons-le FormMain), et un autre formulaire qui devrait agir comme une boîte de dialogue (FormTask). L'utilisateur ne peut pas interagir avec le formulaire principal tant qu'il n'a pas renseigné les informations sur FormTask. FormTask contient simplement une seule zone de texte, et la valeur de cette zone de texte doit être renvoyée à FormMain et conservée en tant que variable. FormTask nécessite un paramètre exerciseType. Lorsque FormTask s'ouvre, il vérifie la valeur de ce paramètre et définit la valeur par défaut de la zone de texte en conséquence. Cela fonctionne déjà, je ne sais pas comment renvoyer ma valeur de chaîne au MainForm déjà ouvert. Ces boîtes de dialogue semblent seulement pouvoir renvoyer DialogResults, ce qui n'est pas ce que je recherche. Je ne suis pas trop expérimenté non plus, et je préfère éviter de tâtonner pour créer ma propre boîte de dialogue personnalisée.

FormMain:

FormTask formTask = new FormTask(exerciseType);
formOpgaveInvoker.ShowDialog();

FormTask:

private void button1_Click(object sender, EventArgs e)
{
    string opgave = textBoxOpgave.Text;
    // return string value to MainForm here
}
20
Jort

Créer une propriété publique dans FormTask

public string Opgave { get {return textBoxOpgave.Text;}}

Et vérifiez-le après ShowDialog ();

FormTask formTask = new FormTask(exerciseType);
formOpgaveInvoer.ShowDialog();
formOpgaveInvoer.Opgave;  // here it is
32
Stecya

La façon la plus simple de procéder consiste à ajouter une propriété publique à votre classe de formulaire pour renvoyer la chaîne.

public string opgave
{
    get;
    private set;
}

Attribuez à cette propriété à la fermeture de votre boîte de dialogue, puis lisez la propriété à partir du code qui a appelé ShowDialog():

private void button1_Click(object sender, EventArgs e)
{
    opgave = textBoxOpgave.Text;
}

...

FormTask formTask = new FormTask(exerciseType);
formOpgaveInvoker.ShowDialog();
DoSomething(formTask.opgave);
1
David Heffernan

Les formulaires ne sont que des classes normales. Cela signifie que vous pouvez y créer des propriétés.
Donc: Créez une propriété et affectez-lui la valeur.

1
Daniel Hilgarth

Ajoutez une propriété à FormTask par exemple String1 comme

public string String1 {get; set;}

Définissez la valeur de String1 dans button1_Click par exemple,

Vous pouvez accéder à cette propriété dans MainForm comme

FormTask formTask = new FormTask(exerciseType);   
formOpgaveInvoer.ShowDialog(); 
string str = formTask.String1;
1
FIre Panda