2008-12-03 10 views
2

Je construis une winform en C# avec divers éléments dans un panneau qui commencent soit invisibles, soit désactivés, soit mis à null (étiquettes, combos, grilles, etc.). Lorsque l'utilisateur parcourt et fait des choix, ces éléments sont remplis, sélectionnés, etc.Réinitialisation des éléments d'un winform à l'état initialisé (C#/.Net)

L'idée est de télécharger des fichiers, de les lire et de traiter des entrées dans une base de données. Une fois le traitement de ce répertoire terminé, j'aimerais que l'utilisateur puisse sélectionner un autre répertoire sans quitter et redémarrer l'application winform, en appuyant sur un bouton qui devient visible une fois le processus terminé. Y at-il un appel facile à réinitialiser l'application (ou le panneau qui contient les éléments), semblable à quand un formulaire Web est rafraîchi, ou dois-je écrire une fonction qui "réinitialise" tous ces éléments un à un temps?

EDIT: À la suite d'une réunion de développement, mon projet a changé de direction. Je vous remercie tous les deux pour vos réponses et je vais terminer la question.

+0

Salut. La réponse à cette question m'a indiqué une solution qui a résolu un de mes problèmes. Peut-être devriez-vous rouvrir cela parce que cela pourrait ne pas vous concerner, cela pourrait être lié à d'autres personnes. – MrValdez

Répondre

2

Supprimez simplement le panneau du formulaire et créez le nouveau.

EDIT: Exemple:

Panel CreatePanelWithDynamicControls() { 
    Panel ret = new Panel(); 
    ret.Dock = DockStyle.Fill; 
    // some logic, which initialize content of panel 

    return ret; 
} 

void InitializeDynamicControls() { 
    this.Controls.Clear(); 
    Panel pnl = this.CreatePanelWithDynamiControls(); 
    this.Controls.Add(pnl); 
} 

void Form1_Load(object sender, EventArgs e) { 
    if (!this.DesignMode) { 
     this.InitializeDynamicControls(); 
    } 
} 

// I don't know exactly, on which situation 
// do you want reset controls 
void SomeEvent(object sender, EventArgs e) { 
    this.InitializeDynamicControls(); 
} 
+0

J'essaye ceci - je pense que cela pourrait fonctionner. Si c'est le cas, je vous marque la meilleure réponse. –

+0

Il a terminé, mais il n'a pas réinitialisé les éléments dans la TabPage, et il l'a mis à la fin. Il se peut que je doive inclure tous les éléments dans un autre panneau, puis supprimer et ajouter uniquement le ou les panneaux. –

+0

C'était presque là, donc dans l'esprit de ne pas voir ce message rouge ennuyeux, je marque le meilleur. –

1

Vous pouvez essayer d'appeler this.InitializeComponent(), ce qui peut faire l'affaire. Alternativement, si votre application a un formulaire 'Directory Select' et un 'Process Files', vous pouvez faire en sorte que le formulaire de sélection d'annuaire fasse un "nouveau" sur le formulaire Processus, qui doit le retourner à son état d'origine ouvert, cependant).

+0

Il a jeté une erreur car (je pense) le bouton l'appelant n'était pas l'objet à ré-initialiser. –

+0

Si vous êtes sur un formulaire, et vous appelez 'ceci', il devrait se référer au formulaire. Quelle erreur? – GWLlosa

+0

Peut-être que c'est mon problème. Cependant, il s'avère que, suite à une réunion de développement, ils veulent que la grille de données persiste afin que les enregistrements puissent être ajoutés, donc je ne peux pas réintroduire le panneau de tabulation. Merci quand même. –

Questions connexes