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

Windows Forms Discussion :

Priorité événements Controls


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Modérateur
    Avatar de toopac
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 940
    Par défaut Priorité événements Controls
    Bonjour,

    Dans une application, un utilisateur saisi des informations par le biais de divers controls (combobox, datetimepicker, ...), et envoie le tout en cliquant sur un bouton.

    Jusque là tout va bien.

    J'aimerais maintenant pour faciliter la saisie, envoyer les informations quand l'utilisateur appuie sur la touche "Entrer".

    Du coup je fais le code suivant :
    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
     
    public Form1()
    {
        ...
        foreach (Control ctrl in panelOption.Controls)
        {
            ctrl.KeyUp += new KeyEventHandler(ctrlOption_KeyUp);
        }
    }
    private void ctrlOption_KeyUp(object sender, KeyEventArgs e)
    {
        if (e.KeyCode.Equals(Keys.Enter))
        {
             buttonSend_Click(null, null);
        }
    }
     
     
    private void buttonSend_Click(object sender, EventArgs e)
    {
        ...
    }
    Mon problème concerne le DateTimePicker :
    Si je change au clavier le jour dans le DateTimePicker et que j'appuie juste après sur entrer, la date que j'obtiens n'est pas celle que je viens d'entrer, mais la précédente.
    (J'ai testé sur un comboBox avec DropDownStyle = DropDown, et j'ai le même problème après une saisie au clavier.)

    Comment puis-je faire pour "valider" la valeur saisie au clavier avant de déclencher l'événement keyUp?

  2. #2
    Membre émérite
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2007
    Messages
    693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 693
    Par défaut
    Bonjour,

    Petite question, est-il possible (dans le fonctionnement de ton application) de mettre le bouton Valider en tant qu'acceptbutton de ta form ?
    Cela te simplifierais pas mal de chose.

    Bon courage

  3. #3
    Modérateur
    Avatar de toopac
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 940
    Par défaut
    Je ne connaissais pas la propriété acceptButton!

    Effectivement ça simplifierait bien les choses, mais ça aurait été trop beau.

    En tout cas je retiens cette propriété!

  4. #4
    Modérateur
    Avatar de toopac
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 940
    Par défaut
    pour préciser un peu, la valeur n'est pas validée dans le DateTimePicker si j'entre une date à 1 chiffre.
    Quand j'entre le 2ème ça fonctionne.

    Faut je trouve comment valider la valeur manuellement.
    QQn à une idée?

  5. #5
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    rien compris mais je tente quand meme

    tab ?

    sendkeys ?

    les deux ?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Modérateur
    Avatar de toopac
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 940
    Par défaut
    c'est vrai que c'est pas très clair, mais ça me semble pas très facile à expliquer.

    Voici ce que je fais :
    Je clique sur mon DateTimePicker (qui est à la date d'aujourd'hui : "mardi 25 août 2009"), le jour (25) est surligné. [image 01]
    Je tape "1" au clavier, puis "enter". [image 02]
    A ce moment là, l'événement keyUp est lancé, mais quand je récupère la valeur du DateTimePicker (monDateTimePicker.Value), j'obtiens la date d'aujourd'hui (25/08), alors que je voudrais avoir le 1er août.

    En revanche si je tape une date à 2 chiffres valide (01 ou 23), j'obtiens bien la date saisie (1 ou 23 août), et le jour de la semaine se met à jour

    Si la date n'est pas valide (99 aout), j'ai le même "problème"

    Donc pour moi, la propriété Value du DateTimePicker est mise à jour une fois que 2 chiffres ont étés entrés, et que ces 2 chiffres correspondent à un jour du mois.

    Donc je voulais savoir si il était possible récupérer la date saisie ou de lancer la validation du DateTimePicker, alors qu'un seul chiffre a été entré.
    (quand j'appuie sur "entrer" récupérer la valeur saisie sur le DateTimePicker, dans mon exemple le 1er aout)
    ou lui faire comprendre que les touches "1"+"entrer" = "0"+1"+"entrer" (pareil pour 2, 3, ..., 9)

    Voilà, en espérant avoir été plus clair, ou au moins plus précis, je vous remercie pour vos réponses
    Images attachées Images attachées   

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2010] gestion d'évènements controles
    Par killowatt dans le forum Access
    Réponses: 6
    Dernier message: 08/06/2015, 14h56
  2. [C#] User Control qui génère un évènement
    Par Amnesiak dans le forum Windows Forms
    Réponses: 3
    Dernier message: 09/10/2006, 14h44
  3. évènement move d'un control
    Par jogu dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 14/09/2006, 18h14
  4. [VB]Définir un événement à un controle créé dynamiquement
    Par Ooly2001 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 19/01/2006, 11h15

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