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
}
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
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);
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.
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;