Afficher un string suivant le temps de pression sur une touche
chiqitoss
Messages postés7Date d'inscriptionmercredi 7 janvier 2009StatutMembreDernière intervention28 mai 2009
-
12 mars 2009 à 15:59
chiqitoss
Messages postés7Date d'inscriptionmercredi 7 janvier 2009StatutMembreDernière intervention28 mai 2009
-
15 mars 2009 à 13:47
Alors déja, connaissez vous le morse?
Je voudrais le retranscrire en c# donc en gros quand j'appuie sur la barre d'espace plus de "n" temps je veux un certain caractère et si c'est moins de "n" temps je veux afficher un autre caractère.
SI quelqu'un a des idées je suis PRENEUR!!!!! je planche dessus depuis un certain temps mais rien d'interessant malheuresement! Merci beaucoup
A voir également:
Afficher un string suivant le temps de pression sur une touche
WishhhMaster
Messages postés327Date d'inscriptionmardi 17 février 2004StatutMembreDernière intervention10 avril 20108 12 mars 2009 à 21:54
utilise l'evenement KeyDown pour detecter l'appui sur une touche, et KeyUp pour savoir quand la touche est relachee.
Dans KeyDown, tu peux declencher un chrono (Stopwatch) et l'arreter dans KeyUp.
chiqitoss
Messages postés7Date d'inscriptionmercredi 7 janvier 2009StatutMembreDernière intervention28 mai 2009 14 mars 2009 à 13:18
Après des recherches j'ai ça qui parait un peu mieux :
Donc enfet si j'appuie plus d'une seconde sur la touche retour arrière, je veux qu'il m'affiche un - et si c'est moins d'une seconde je veux qu'il m'affiche un .
voila ma fonction
private void textBox2_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
Stopwatch Temps = new Stopwatch(); // Initialisation de mon temps
if (e.KeyCode == Keys.Back)
{ // j'appuie sur backspace donc je lance le timer
Temps.Start();
}
if (e.KeyData != Keys.Back)
{ // backspace relaché , j'arrete le timer
Temps.Stop();
}
TimeSpan ts = Temps.Elapsed; // recupération de mon temps
if (ts.Milliseconds > 1000) // si c plus d'une seconde
{
textBox2.Text = ".";
}
else // si c moins
{
textBox2.Text = "-";
}
}
Le pb, c'est que rien ne s'affiche ! Donc si quelqu'un à des idées
RougailSaucisse
Messages postés118Date d'inscriptionlundi 16 février 2009StatutMembreDernière intervention 6 décembre 20101 14 mars 2009 à 23:07
Comme l'a dis Wishhhmaster il faut arreter ton timer dans l'evenement keyup.
Dans keyDown tu demarres le timer, dans keyUp tu l'arretes. De plus je crois que l'evenemtn Keydown est appelé a plusieurs reprises tant que tu ne relaches pas la touche, il faudra donc veiller a ne declencher ton timer que la premiere fois.
tu pourrais faire un truc du genre (j'utilise pas de timer ici cependant):
WishhhMaster
Messages postés327Date d'inscriptionmardi 17 février 2004StatutMembreDernière intervention10 avril 20108 15 mars 2009 à 07:13
Puis aussi si tu veux afficher des caractères quand tu appuies sur retour arrière, je ne vois pas trop l'intérêt de les afficher dans la même textbox que tu utilises pour détecter l'appui sur cette touche, car ça va les effacer non?
(A moins de mettre e.handled a true dans ton évènement keydown)
RougailSaucisse
Messages postés118Date d'inscriptionlundi 16 février 2009StatutMembreDernière intervention 6 décembre 20101 15 mars 2009 à 10:29
effectivement tant qu'il ne deplacera pas le curseur cela fonctionnera correctement.
si en revanche il met le curseur a un position > 0, alors les caracteres vont s'effacer et effectivement pour parer a cela il faut gerer le e.handled.
Par contre je crois qu'il faut le placer sur l'evenement KeyPress et non KeyDown (pas sur) donc à rajouter:
chiqitoss
Messages postés7Date d'inscriptionmercredi 7 janvier 2009StatutMembreDernière intervention28 mai 2009 15 mars 2009 à 13:47
Merci à vous deux, ça m'avance déja très bien!
Sur le coup j'avais mis Retour Arrière, cela peut être n'importe quelle touche.
Juste que j'avais pensé d'abord à la barre d'espace : c'est la première touche que l'on pense pour faire du morse, puis comme cela faisait un espace, c'était galère, pour finir jpense que je vais prendre un f3 ou autres.
Merci RougailSaucisse (même si je préfère le tomate), je mettrais le code dès qu'il sera fonctionnel!