boite de dialogue avec tempo - C#/.NET managed - Programmation
Marsh Posté le 05-07-2004 à 14:03:34
je voulais faire un gros for vide mais c assez crade quand meme
Marsh Posté le 05-07-2004 à 14:22:40
pourquoi ne pas utiliser un Timer
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
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
ç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) ?
Marsh Posté le 05-07-2004 à 14:51:22
Code :
|
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?
Marsh Posté le 05-07-2004 à 15:14:50
Harkonnen a écrit :
|
ca c'est 4 lignes (allez, 2, jcompte pas les parenthèses)
Sinon, ca me parait etre la meilleure solution.
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 :
|
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 !
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
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 !
Marsh Posté le 05-07-2004 à 15:39:36
Cype en fosse cai toi?
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...
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...
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