2017-08-23 2 views
0

J'ai une série de Windows Forms qui fonctionnent comme une application Web. J'ai un formulaire qui définit le texte d'une étiquette à un nombre aléatoire et j'essaye de passer ce nombre à travers d'autres formes et soyez sûr qu'il met à jour partout. Je n'ai pas la possibilité de créer une base de données, c'est pourquoi je le fais. Le problème que j'ai, c'est que lorsque je me déplace dans l'application et que j'utilise un bouton pour revenir à la première page qui recevrait le nombre aléatoire, le code s'exécute à nouveau et le nombre change. J'ai mis en commentaire la fermeture et essayé Show au lieu de ShowDialog, mais l'application se bloque. Fondamentalement, je ai juste besoin de comprendre comment faire pour détecter si le formulaire a déjà été créé une fois dans la vie de l'application pour l'époque et seulement avoir le code aléatoire exécuter cette fois et pas chaque fois que je reviens à la page via juste en utilisant l'application comme je le veux utilisé. J'utilise Windows Forms pour gagner du temps, uniquement à des fins de démonstration, et je ne veux pas utiliser CSS et Bootstrap.Je souhaite exécuter un extrait de code lors du premier chargement du formulaire

Merci.

Répondre

1

Exécutez-le dans le formulaire Shown event handler.

À partir du lien:

L'événement montré ne se pose la première fois qu'un formulaire est affiché

ou Load event handler.

A partir de ce lien:

Se produit avant un formulaire est affiché pour la première fois.

Selon le moment où vous le voulez, il est exécuté. Si vous créez de nouveaux formulaires à chaque fois et que vous voulez juste savoir si quelque chose s'est produit au cours de l'exécution de l'application - ayez une variable public static bool, définissez-la quand ce code est exécuté et vérifiez-la avant. Quelque chose comme:

if(!Class1.theFlag) 
{ 
    Class1.theFlag = true; 
    //run your code here. 
} 
+0

Il veut seulement la première instance. – SLaks

+0

@SLaks J'ai édité ma réponse en conséquence, au cas où ce serait vraiment ce que souhaite OP. – ispiro

+0

Je viens d'écrire la méthode pour l'événement Shown et y mettre un messagebox. Lorsque j'ai exécuté mon programme et que je l'ai poussé vers le deuxième formulaire, je n'ai pas reçu de boîte de message à afficher. J'ai écrit manuellement la méthode et vérifié avec les documents MSDN, mais cela ne fonctionne pas. Également placé l'extrait de nombre aléatoire dans la méthode _Load et il se réexécute lorsque je reviens à la deuxième forme. Donc, si vous étiez sur form2 et que l'étiquette lisait 33, vous appuyez sur un bouton pour aller à la forme 3, puis un autre pour revenir à form2 et le nombre lit 726 au lieu de ce que je veux qu'il lise, 33. – TomG103

0

Si vous ne pouvez pas stocker des variables dans une base de données et devez passer ces valeurs parmi Windows Forms, ajoutez simplement une nouvelle classe au projet.

Nommez la classe comme vous le souhaitez. J'ai nommé mes données de classe et en ai fait une classe statique.

Ensuite, ajoutez des méthodes pour obtenir et définir.

public static int someNum 
{ 
    get; set; 
} = 0; 

public static string someString 
{ 
    get; set; 
} = ""; 

Donc, maintenant vous pouvez simplement définir ces valeurs à data.someNum ou data.someString au lieu d'avoir à vérifier ceci ou cela. Beaucoup plus vite que tant d'exemples que j'ai rencontrés ici et beaucoup moins de code.

Je voudrais remercier Ispiro pour son éducation ici cependant. Merci mec.