IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Action sur la barre espace


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 16
    Par défaut Action sur la barre espace
    Bonjour,

    J'ai écris un programme, une Form , comprenant une vingtaine de bouton. Je voudrai que l appuie sur la barre espace fasse la meme actin que sur un bouton. J'ai écris un petit programme pour valider , ou j'ai 2 boutons, l'un génère un son, et le deuxième incrémente un compteur dont la valeur s'affiche dans un label. Je voudrai qu'en appuyant sur la barre espace un message s'affiche dans le label:

    j'ai bien vu qu'il fallait que KeyPreview soit a True, mais ça ne marche pas. Dans Google, j'ai cherché des exemples mais je n'ai rien trouvé. Si vous me donnez une page ou je trouve ma réponse, cela me va parfaitement. Je pense que le problème viens de la fonction : F_BarreEspace.

    Merci de votre aide.

    Pascal

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    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;
     
    using Microsoft.DirectX;
    using Microsoft.DirectX.DirectInput;
    using Microsoft.DirectX.AudioVideoPlayback;
    using System.Collections;
     
    namespace utilisation_de_la_barre_espace
    {
        public partial class Form1 : Form
        {
            int variable; 
     
            public Form1()
            {
                InitializeComponent();
            }
     
            private void Form1_Load(object sender, KeyPressEventArgs e)
               {
                        F_BarreEspace(e);
               }
     
            private void button_son_Click(object sender, EventArgs e)
            {
                System.Media.SoundPlayer player = new System.Media.SoundPlayer(Application.StartupPath + @"\sons\son_2.wav");
                player.Play();
            }
     
            private void button_compteur_Click(object sender, EventArgs e)
            {
                variable++;
                label1.Text = variable.ToString("D2");
            }
     
     
            private void F_BarreEspace(System.Windows.Forms.KeyPressEventArgs e = null)
            {
                if (e != null)
                {
                MessageBox.Show(e.KeyChar.ToString());
                    if (e.KeyChar == (char)Keys.Space)
                    {
                        MessageBox.Show("Test espace"); //b mettre ici la fonction espace
                      label1.Text = " la barre espace marche" + variable.ToString("d2");
                    }
                 }
                else
                {
                    MessageBox.Show("Test click");
                }
            }
     
     
        }  //  public partial class Form1 : Form
    }  //  namespace utilisation_de_la_barre_espace

  2. #2
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 86
    Par défaut
    Bonjour essaye d'overrider processCmdKey http://http://msdn.microsoft.com/en-...v=vs.110).aspx

  3. #3
    Membre Expert
    Avatar de PixelJuice
    Homme Profil pro
    Ingénieur .NET & Game Designer
    Inscrit en
    Janvier 2014
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur .NET & Game Designer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 662
    Par défaut
    Bonjour,

    comment as-tu gérer l'appui sur Espace ? As-tu mis un évenement KeyPress / KeyDown sur ta form ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
            KeyPreview = true;
     
            private void AppuiEspace(object sender, KeyPressEventArgs e)
            {
                    if (e.KeyChar == (char)Keys.Space)
                    {
                        MessageBox.Show("Appui sur espace");
                    }
     
            }
    Pour moi ça marche , même si un bouton a le focus ou non. Donc quand tu dis que ça ne marche pas , il y a un message d'erreur ? Ou il ne se passe rien ?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 16
    Par défaut
    Pixel,

    Je n'ai pas de message d'erreur, mais il ne se passe rien

    Effectivement, j'ai lu plusieurs fois KeyPress / KeyPress, mais je ne sais pas comment les intégrer. Est ce c'est je dois chercher ca dans les outil, car je ne les ai pas trouver dans les propriete de ma Form. J'ai bien lu :

    Dans un gestionnaire d'événements KeyPress, donnez à la propriété KeyChar de la classe KeyPressEventArgs la valeur de la nouvelle touche de caractère.

    Mais justement, je ne vois pas comment le faire, si c'est dans les propriete de la Form, oubien une ligne de code.

    Merci de votre aide.

    Pascal

  5. #5
    Membre Expert
    Avatar de PixelJuice
    Homme Profil pro
    Ingénieur .NET & Game Designer
    Inscrit en
    Janvier 2014
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur .NET & Game Designer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 662
    Par défaut
    Je voulais écrire KeyPress / KeyDown , pardon.

    Ce sont des évenements en fait , qui sont disponibles dans la liste des événements de ta Form :

    Nom : Visual_studio_c_sharp_properties.jpg
Affichages : 1758
Taille : 19,1 Ko

    Il faut cliqué sur l'onglet avec le petit "éclair" pour switché entre la liste des propriétés et la liste des évenements.La tu aura accès a tous les evenements possible pour ta form , dont KeyPress et KeyDown. Utilise plutôt KeyPress.

    Tu peux assigner une méthode a cet événement , ou en générer une en rentrant un nom.Si tu copies / colle le code que j'ai mis , l’événement pourra selectionner cette méthode et l’exécutera a chaque appui sur Espace.

    Tu peux aussi abonné ta form a l'evenement manuellement dans le pire des cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.NomDeLaMethode);
    Mais autant le faire par Visual Studio , c'est plus simple.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 16
    Par défaut
    Pixel,


    Merci.

    Effectivement, je n'avais pas vu les propriétés " Evenement", et ça marche mieux. Mais a présent, lorsque j'appuie sur la touche ENTER, la touche sur laquelle la souri est positionnée, agit. J'ai essayé avec un SWITCH- CASE de lancé plusieurs action différente, mais jai l'impresson que ca ne marche qu'avec une seul touche. Est ce normal, oubien est ce mon code à corriger. J'ai aussi l'impression que je ne peux utilise que des sons faisant moin de 50 kilo. Est ce normal ?
    J'imagine que je trouverai une page me donnant toute les propriétés des evenements.


    Merci pour ton aide.

    Pascal

Discussions similaires

  1. Récupérer temps d'appui sur la barre d'espace
    Par Paidon dans le forum Général Python
    Réponses: 11
    Dernier message: 22/11/2013, 23h55
  2. Réponses: 4
    Dernier message: 14/11/2011, 17h05
  3. Mise à jour automatique de la barre d'outil après action sur un bouton
    Par anis gaied dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 10/10/2011, 15h53
  4. Ajouter une action sur une barre de menu
    Par alex2746 dans le forum Qt
    Réponses: 2
    Dernier message: 01/04/2010, 15h39
  5. Action sur la barre outils
    Par majothi dans le forum Excel
    Réponses: 2
    Dernier message: 24/02/2009, 11h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo