Timer programmé avec barre espace [Résolu]

Signaler
Messages postés
5
Date d'inscription
lundi 12 avril 2010
Statut
Membre
Dernière intervention
30 avril 2010
-
Lutinore
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
-
Bonjour,
Je souhaite activer un un timer avec la barre espace, je suis pour le moment capable de le faire en cliquant sur un bouton mais je veux remplacer le clic sur le bouton par une pression sur la barre espace:
Pour le moment mon code est le suivant (je suppose que je dois remplacer "private void button1_Click(object sender, EventArgs e)" par qqc qui est déclenché la barre espace...mais quelle est la ligne de commande pour cela..
Merci d'avance pour votre réponse
Flo
PS: je suis débutant en programmation



using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;


namespace FloTimer
{
public partial class Form1 : Form
{

bool EtatTimer = false;
int compteur = 0;
public Form1()
{
InitializeComponent();
timer1.Interval = 1000;
button1.Text = "Start";
label1.Text = "timer";
label1.Visible = true;
}

private void button1_Click(object sender, EventArgs e)
{
if (EtatTimer == false)
{
timer1.Start();
EtatTimer = true;
button1.Text = "Stop";
//label1.Visible = true;
label1.Text = compteur.ToString();
}
else
{
timer1.Stop();
EtatTimer = false;
button1.Text = "Start";
compteur = 0;
label1.Text = "Timer";
//label1.Visible = false;
}
}

private void timer1_Tick(object sender, EventArgs e)
{
compteur++;
label1.Text = compteur.ToString();
}

}
}

6 réponses

Messages postés
5
Date d'inscription
lundi 12 avril 2010
Statut
Membre
Dernière intervention
30 avril 2010

OK, merci à tous! J'ai finalement réussi avec ce type de commande

private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == ' ')

Encore, merci pour votre aide!
Messages postés
326
Date d'inscription
vendredi 23 décembre 2005
Statut
Membre
Dernière intervention
8 février 2011
10
Je pense qu'il faut regarder du coté du hook du clavier.
http://blogs.msdn.com/toub/archive/2006/05/03/589423.aspx
Dans cet exemple le hook est en low-level mais tu as juste a changer la valeur de cette constante. De mémoire il me semble que c'est 2 à la place de 13. Pour être sur je te laisse chercher la valeur de WH_KEYBOARD sur google.
private const int WH_KEYBOARD_LL = 13;
Messages postés
5
Date d'inscription
lundi 12 avril 2010
Statut
Membre
Dernière intervention
30 avril 2010

Merci beaucoup,
Donc si j'ai bien compris en rajoutant cette ligne je vais définir le clavier comme aurait pu l'être un bouton ou un autre élément créé avec windows form...
Mais ensuite comment insérer cela en haut de ma boucle?
Dsl si mes questions paraissent idiotes mais je suis un vrai débutant en programmation windows (un débutant intéressé mais un débutant quand même ^^)!
Merci d'avance
Messages postés
326
Date d'inscription
vendredi 23 décembre 2005
Statut
Membre
Dernière intervention
8 février 2011
10
En gros le hook permet d'enregistrer tous les messages venant tu clavier. Il est donc facile de détecter lorsque la touche espace est appuyer.
Je te conseille de te renseigner un peu sur les hook. demande à Google, il en sait beaucoup. Faut juste savoir le faire parler
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
29
Salut, un hook c'est un peu compliqué pour un débutant.

Pour gérer le clavier lorsque ta forme est au premier plan il suffit de surcharger (réécrire) la fonction OnKeyDown ou de s'abonner à l'évènement KeyDown.

Si la forme n'est pas au premier plan dans ce cas oui il faut utiliser un hook, ce n'est pas une classe .NET c'est des fonctions de l'API Win32.
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
29
KeyDown est mieux que KeyPress dans ton cas, mais c'est le même principe.