2011-06-14 2 views
0

Je fais une application dans laquelle il y a un principal Form FormMain et un assistant Form FormHelper. Pour comprendre, prenons l'exemple de FormMain dans lequel l'utilisateur saisit les commandes et fréquemment l'utilisateur veut ouvrir FormHelper et y remplir certaines valeurs. Lorsque la commande est enregistrée, les valeurs de FormMain sont enregistrées ainsi que FormHelper.Rouvrir un formulaire fermé qui a été montré en utilisant ShowDialog()

Ce que je ne faisais que faire le FormHelper un champ dans la définition de FormMain:

public partial class FormMain : Form 
{ 
    FormHelper BillsForm; 
} 

Et, dans le constructeur:

public FormReceiptNew(string ReceiptNo) 
    { 
     InitializeComponent(); 
     BillsForm = new BillsForm();//just once 
    } 

Supposons maintenant que l'utilisateur, tout en remplissant le FormMain, veut entrer des valeurs dans FormHelper, il/elle peut appuyer sur ALT + H et le formulaire sera montré en utilisant ShowDialog() et quand c'est fait, l'utilisateur fermera le FormHelper, et le même processus se produira autant de fois que le FormHelper est requis .

La raison pour laquelle je veux que le même Formulaire s'ouvre plusieurs fois, c'est que l'utilisateur y remplit certaines valeurs et que je veux conserver les valeurs la prochaine fois que le FormHelper est à nouveau affiché et lorsque l'utilisateur est complètement le FormMain, les valeurs de la FormMain sera enregistrée en même temps que les valeurs de FormHelper.So lorsque l'utilisateur appuie sur ALT + H chaque fois, le code suivant ne fonctionnera pas:

BillsForm= new FormHelper(); 
BillsForm.ShowDialog(); 

car il crée une nouvelle forme et toutes les anciennes valeurs seront supprimées.

+3

N'écrivez simplement BillsForm = new FormsHelper(), problème résolu. –

+0

@Hanns que faire si le formulaire était précédemment fermé? Appellera à nouveau ShowDialog() sur le fera apparaître à nouveau? –

+0

@Hans, Pouvez-vous s'il vous plaît fournir une explication de ce que vous avez écrit? –

Répondre

0

Dans votre formulaire principal, stockez une référence au formulaire d'assistance. Vous instanciez le formulaire d'assistance une fois (onLoad par exemple) et continuez d'appeler showDialog() sur ce même objet. Tous les champs doivent être conservés entre les appels.

0

Si vous stockez ces valeurs dans le formulaire principal après la fermeture, vous pouvez renvoyer ces valeurs à FormHelper lors de la création via le ou les constructeurs. D'après votre question, il semble déjà que vous allez stocker les valeurs que vous voulez conserver dans le formulaire principal. Il ne devrait donc pas y avoir de problème lors de leur création.

+0

Lorsque l'utilisateur a terminé, les valeurs des valeurs dans FormMain et FormHelper sont enregistrées dans la base de données. Et l'utilisateur remplit un DatGridView dans FormHelper, il sera donc fastidieux de stocker les valeurs dans FormMain lorsque le FormHelper est fermé et à nouveau recréer ce DataGridView dans FormHelper lorsqu'il est recréé. –

Questions connexes