boite de dialogue avec tempo

boite de dialogue avec tempo - C#/.NET managed - Programmation

Marsh Posté le 05-07-2004 à 11:39:55    

Bonjour a tous,
 
  je voudrais faire une boite de dialogue avec tempo qui appuie sur ok tout seul au bout de 5s, ce qui evite de bloquer le programme si l'utilisateur n'est pas la. J'ai pense a utiliser la classe Timer, mais je ne sais pas si il n'y a pas plus simple...
 
Merci :)

Reply

Marsh Posté le 05-07-2004 à 11:39:55   

Reply

Marsh Posté le 05-07-2004 à 13:49:38    

any idea?

Reply

Marsh Posté le 05-07-2004 à 14:03:34    

je voulais faire un gros for vide mais c assez crade quand meme :)

Reply

Marsh Posté le 05-07-2004 à 14:22:40    

pourquoi ne pas utiliser un Timer :??:


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 05-07-2004 à 14:36:09    

bah en fait g fait avec la date systeme, avec une bete soustraction, ca prend 3 lignes. Avec un timer jai limpression que tu dois te servir de TimerEventProcessor, de faire des start et des stop, ou de use des interval, ce qui me parait un peu bourrin pour une simple boite

Reply

Marsh Posté le 05-07-2004 à 14:42:51    

cymp a écrit :

bah en fait g fait avec la date systeme, avec une bete soustraction, ca prend 3 lignes. Avec un timer jai limpression que tu dois te servir de TimerEventProcessor, de faire des start et des stop, ou de use des interval, ce qui me parait un peu bourrin pour une simple boite

ben c'est pourtant le plus propre hein [:heink]
ça te parait tellement compliqué de définir un timer avec un intervalle de 5 secondes, puis de le démarrer, et d'y rattacher une callback qui te ferme la Dialog (1 ligne) ?


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 05-07-2004 à 14:44:34    

comment tu fais ca en une ligne?

Reply

Marsh Posté le 05-07-2004 à 14:51:22    

Code :
  1. public void Timer_Tick(object sender,EventArgs eArgs)
  2. {
  3.    TheForm.Close();
  4. }


Message édité par Harkonnen le 05-07-2004 à 14:51:41

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 05-07-2004 à 15:06:42    

oui mais comment je fais pour que mq boite corresponde a TheForm et pouvoir lappeler correctement dqns cette methode?

Reply

Marsh Posté le 05-07-2004 à 15:14:50    

Harkonnen a écrit :

Code :
  1. public void Timer_Tick(object sender,EventArgs eArgs)
  2. {
  3.    TheForm.Close();
  4. }



 
ca c'est 4 lignes (allez, 2, jcompte pas les parenthèses)  :D  
Sinon, ca me parait etre la meilleure solution.

Reply

Marsh Posté le 05-07-2004 à 15:14:50   

Reply

Marsh Posté le 05-07-2004 à 15:16:32    

je comprends pas comment marche votre truc :(

Reply

Marsh Posté le 05-07-2004 à 15:22:53    

tain, y'a du boulot ! je te soupçonne de te lancer dans un truc sans connaitre le C# ni .NET toi !
 
il te suffit juste de remplacer "TheForm" par le nom de ta boite hein, c'est juste un exemple ! (attribut "Name" de la classe Form)
 
d'abord, dans le constructeur de ta classe, tu rajoutes les lignes suivantes :

Code :
  1. Clock=new Timer(); // on créé un timer
  2. Clock.Interval=5000; // on définit son intervalle de déclenchement toutes les 5000 ms
  3. Clock.Start(); // on le démarre
  4. Clock.Tick+=new EventHandler(Timer_Tick); // on rattache à son évènement Tick un delegate qui appellera la fonction que je t'ai posté plus haut toutes les 5000 ms


Et c'est tout !
T'auras juste à rajouter un test dans la fonction du post précédent pour vérifier si le Tick provient bien du Timer Clock (if sender == Clock...), à stopper ce timer à la fin de cette fonction et à rajouter un booléen pour vérifier si le Timer est toujours en place, auquel cas tu devras appeler Application.DoEvents pour éviter de freezer le système !


Message édité par Harkonnen le 05-07-2004 à 15:24:28

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 05-07-2004 à 15:26:41    

oui mais moi pour afficher une boite de dialogue je fais MessageBox.Show, et jarrive pas a donner un nom a cette box! Donc je peux pas lui faire de close


Message édité par cymp le 05-07-2004 à 15:34:08
Reply

Marsh Posté le 05-07-2004 à 15:35:53    

MessageBox.Show t'affiche une boite de dialogue système modale, qui en général se déclenche pour un cas précis et dans un but informatif. C'est donc pas pour rien qu'elle demande à l'utilisateur de cliquer sur un bouton pour la fermer, ça prouve qu'il est au courant d'un éventuel disfonctionnement dans sa manière de faire ou dans son système ! Vouloir forcer par programme sa fermeture est *NUL* et *DANGEREUX*
 
Imagine un logiciel de compta, qui te déclenche une MessageBox dés que la banque passe sous le seuil de découvert, et que l'opérateur de saisie s'absente pour faire autre chose un certain temps ! Si on suit ta logique, la Box lui passe sous le nez, et il se retrouve dans la merde car un programmeur novice aura cru bon de faire du zèle !


Message édité par Harkonnen le 05-07-2004 à 15:37:13

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 05-07-2004 à 15:39:36    

Cype en fosse cai toi? [:dawa]


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 05-07-2004 à 15:49:30    

Harkonnen : le pauvre cymp va croire que tu l'aime pas si tu lui réponds sur ce ton.
 
Cymp :  
Harkonnen a raison, vouloir fermer une messagebox sans le consentement de l'utilisateur est ... bizarre :)
Pour obtenir le meme comportement de manière plus traditionnelle, n'utilise pas de messagebox mais ouvre une petite fenetre modale séparée. Dans celle-ci tu pourras mettre un timer, gérer la fermeture automatique, gérer le clic sur le bouton ok ou annuler etc...

Reply

Marsh Posté le 05-07-2004 à 15:58:36    

Bon je suis desole detre nul en c#, je dois faire de la maintenance sur un programme c# et j'en ai jamais fait je me debrouille comme je peux.
Sinon j'ai vu la classe Form, et je v essayer de faire ma ptite boite avec ca...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed