0 votes

C# Comment faire : Essayer d'appeler un bouton deux fois dans la même classe ?

J'ai fait quelques recherches ici et sur le net et je n'ai pas encore trouvé de bonne réponse. Ce que j'essaie de faire, c'est d'appeler un bouton deux fois dans la même classe en C#.

Voici mon scénario -

J'ai un formulaire avec un bouton qui dit "Go". Lorsque je clique dessus la première fois, il passe par des boucles 'for' (sans arrêt) pour afficher une gamme de couleurs. En même temps, je règle les propriétés de button1.Text sur "Stop". Je voudrais pouvoir cliquer sur le bouton une deuxième fois et, à ce moment-là, je voudrais que le programme s'arrête. En gros, un bouton "stop-and-go". Je sais comment le faire avec deux événements de bouton, mais j'aimerais utiliser un seul bouton.

Actuellement, le seul moyen de mettre fin au programme est le bouton X du formulaire.

J'ai essayé différentes choses et je n'ai pas eu beaucoup de chance jusqu'à présent, alors je voulais demander aux gourous ici comment faire.

BTW, il s'agit d'une modification d'un Labos Head First C# exercice du livre.

Merci !

~Allen

1voto

John Donoghue Points 66

Cerebrus a raison d'utiliser le fil de discussion sur les travailleurs d'arrière-plan. Cependant, si vous réalisez une application WPF, il ne sera pas possible de mettre à jour l'interface utilisateur directement. Pour contourner ce problème, vous pouvez appeler Dispatcher.BeginInvoke sur la commande/fenêtre principale.

Un code donné comme :

Private Delegate Sub UpdateUIDelegate(<arguments>)

Private Sub CallUpdateUI(<arguments>)
  control.Dispatcher.BeginInvoke(Windows.Threading.DispatcherPriority.Background, New UpdateUIDelegate(AddressOf UpdateUI), <arguments>)
End Sub

Private Sub UpdateUI(<arguments>)
  'update the UI
End Sub

Vous pouvez appeler CallUpdateUI depuis le fil d'exécution du travailleur d'arrière-plan et le fil d'exécution principal sera chargé d'exécuter UpdateUI.

0voto

Chris Doggett Points 9987

Vous pourriez définir la propriété Tag du bouton sur un booléen indiquant si la prochaine action doit être "Stop" ou "Go", et la réinitialiser chaque fois que vous cliquez sur le bouton. Mais comme il s'agit d'une propriété Object, vous devrez la convertir en bool lorsque vous la lirez.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X