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

Silverlight Discussion :

Changer Evénement Entrer en Tab


Sujet :

Silverlight

  1. #1
    Membre éclairé Avatar de lila23
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Par défaut Changer Evénement Entrer en Tab
    Bonjour à tous ,
    Voila j'aimerais savoir si sur n'importe quel userControl je pourrais faire en sorte que si je presse Entrer cela se change en Tab car j'aimerais automatiser le saut entre les textboxs qui se fait avec tab tout seul et avoir la meme chose avec Entrer!!!

    Dois je faire ca avec du JavaScript?

    Merci de votre aide

  2. #2
    Membre Expert
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Par défaut
    Bonjour,

    Pour la transformation de la touche Enter en Tab, je ne pense pas que cela soit possible. En revanche on peut récupérer la Touche Enter avant qu'elle soit frappée et envoyer le focus sur le control suivant.

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
            private void TextBox_KeyDown(object sender, KeyEventArgs e)
            {
                if (e.Key == Key.Enter)
                {
                    Control control = this.GetNextFocusableControl();
     
                    if (control != null)
                    {
                        control.Focus();
                    }
     
                    e.Handled = true;
                }
            }

    Le problème c'est que la méthode GetNextFocusableControl qui te permet dans mon exemple de récupérer le prochain control n'existe pas nativememt en Silverlight. Il faut donc la coder.

    Pour se faire il faut faire une boucle pour récuperer récursivement les contrôles (à l'aide de VisualTreeHelper) possédant un TabIndex au moins egale au notre et gerer le IsTabStop. C'est donc assez complexe mais peut être trouvable tout fait sur Google.

  3. #3
    Membre éclairé Avatar de lila23
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Par défaut
    oui getNextFocusable n'existe pas , moi ce que j'essaye de faire c'est qu'au niveau de ma page .aspx de faire une fonction qui capture l’évènement entrer qui le transforme en tab et qu'elle laisse cet évènement passé mais comme je m'y connais pas trop en javascript j'ai pas sut faire propager l’évènement après lui avoir affecter un autre keyCode

    Merci de votre aide

  4. #4
    Membre Expert
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Par défaut
    ce sont des textbox HTML et pas Silverlight ?
    Tu as une balise Silverlight au moins dans ta page ?

  5. #5
    Membre éclairé Avatar de lila23
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Par défaut
    non ce sont des texts box silverlight mais je voulais trafficoter un peu pr essayer de récupérer le tab automatique et le faire avec entrer mais pas écrire du code sur chaque usercontrol de mon appli

    Je crois au pére Noel Peut etre

  6. #6
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 190
    Par défaut
    Je connais pas silverlight donc je vais surement dire une connerie

    Je suppose qu'on a pas acces a SendKeys?

  7. #7
    Membre Expert
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Par défaut
    non ce sont des texts box silverlight mais je voulais trafficoter un peu pr essayer de récupérer le tab automatique et le faire avec entrer mais pas écrire du code sur chaque usercontrol de mon appli
    Le gestionnaire de touche javascript est indépendant de celui de Silverlight. Donc tu ne pourras pas y arriver comme ça.

    Je connais pas silverlight donc je vais surement dire une connerie
    Je suppose qu'on a pas acces a SendKeys?
    Oui (comme je l'ai montré dans ma première réponse ) mais malheureusement la propriété Key est en lecture seule et il n'y a donc pas de possibilité à ma connaissance de réinjecter des caractères non ascii comme backspace ou tab en les faisant interpréter par la textbox (pas d'affichage du caractère Tab mais changement de focus).

    On en revient donc à écrire la fameuse méthode GetNextFocusableControl

  8. #8
    Membre éclairé Avatar de lila23
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Par défaut
    même si je fais cette méthode le soucis c'est que je dois sur chaque user control faire sur chaque text Box un évènement keyUP et j'ai des users control qui comporte plus de 20 Texts Box !!!

  9. #9
    Membre Expert
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Par défaut
    Il y a plusieurs solutions élégantes pour gérer ce genre de problème.

    Soit tu hérites de TextBox comme ça

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        public class MaTextBox : TextBox
        {
            protected override void OnKeyDown(KeyEventArgs e)
            {
                // ici on fait le traitement
                base.OnKeyDown(e);
            }
        }

    et dans le XAML tu remplaces tes TextBoxs par tes MaTextBox :

    Code XAML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <my:MaTextBox></my:MaTextBox>

    sinon tu peux faire aussi des attached behavior mais là c'est un peu plus compliqué

    http://geekswithblogs.net/SilverBlog...erlight-3.aspx

    ou, au pire, appeler tous le temps le même evenement

    Code XAML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <TextBox KeyDown="textBox1_KeyDown">
    <TextBox KeyDown="textBox1_KeyDown">
    <TextBox KeyDown="textBox1_KeyDown">

  10. #10
    Membre éclairé Avatar de lila23
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Par défaut
    merci pour ton interet Samuel je crois que faire mon propre text Box est une bonne idée encore faut il que j'écrive la méthode qui passe d'un textBox à un autre surtout que certains sont posé sur un autre composant graphique donc je sais pas trop comment faire!!!

  11. #11
    Membre Expert
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Par défaut
    Pour trouver tous les controls (même ceux inclus dans d'autre controles) tu peux te servir de la classe d'écrite sur ce blog :

    http://blog.falafel.com/blogs/jonath...t_and_WPF.aspx

    Ensuite tu te repères dans liste des controles et tu passes au suivant ou au premier de la liste (si tu es à la fin de la liste) en utilisant Focus.

    Normalement tu devrais trier aussi tes controles en utilsant TabIndex et TabStop mais déjà commence à faire la première partie

Discussions similaires

  1. [cmd.exe] Changer la longueur de TAB
    Par SpiceGuid dans le forum Windows XP
    Réponses: 3
    Dernier message: 04/03/2012, 15h12
  2. comment changer les tab d'un tpagecontrol ?
    Par ded jay dans le forum C++Builder
    Réponses: 9
    Dernier message: 06/01/2010, 11h09
  3. Réponses: 0
    Dernier message: 08/12/2008, 19h41
  4. Changer le ENTER en TAB
    Par dreloman dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 20/07/2008, 22h35
  5. Touche Ctrl + Tab pour changer de JInternalFrame
    Par atha2 dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 31/08/2007, 01h12

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