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 Presentation Foundation Discussion :

TextBox qui perd le focus dès que l'on clique en dehors


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Takumi
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2009
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2009
    Messages : 163
    Par défaut TextBox qui perd le focus dès que l'on clique en dehors
    Bonjour,

    J'ai dans mon application une TextBox et à son évènement LostFocus est associé une fonction. Ce que je souhaite faire c'est que cet évènement soit déclenché dès que l'on clic en dehors de la TextBox quand celle-ci avait le focus, et non pas de devoir forcement cliquer sur un autre Control qui aura récupérer le focus (car mon interface est composé de Control qui parfois ne le capture pas). J'ai un peu cherché sur le net sans succès, ni début de solution, donc je me tourne vers vous pour savoir si cela est techniquement possible. Pour info, j'essais d'appliquer le pattern MVVM dans mon application, donc j’espère que si solution il y a, elle ne risque pas de trop me faire sortir des sentiers de ce pattern.

    Je vous remercie d'avance.

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Août 2010
    Messages : 188
    Par défaut
    Moi aussi ca m'intéresse ca.
    Pareil je travail aussi avec MVVM

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Par défaut
    Salut,

    Le problème est qu'un contrôle perd le focus lorsqu'un autre le prend, donc si tu cliques sur un conteneur ou un contrôle qui ne prend pas le focus, ton contrôle initial garde le focus.

    Quel est ton besoin réellement ?

  4. #4
    Membre confirmé Avatar de Takumi
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2009
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2009
    Messages : 163
    Par défaut
    Bonjour,

    En faite j'ai crée un petit UserControl assez simple, un TextBlock et un TextBox. Quand je clique sur le TextBlock il disparaît et le TextBox apparait. Quand le TextBox perd le focus il disparait et le TextBlock revient. Mon objectif est donc que dès que le TextBox perd le focus celui disparaît car j'estime que l'utilisateur a finis de taper ce qu'il souhaitais ou bien qu'il ne souhaite plus écrire quoi que ce soit. Et quand je dit perdre le focus, c'est à partir du moment où il a cliqué en dehors de la TextBox, n'importe où (c'est un comportement que j'avais observé dans une autre application et que je souhaitais reproduire). Je sais qu'il faut qu'un autre contrôle prenne le focus pour que ma TextBox le perde, c'est pour cela que justement je vous demandais de l'aide car je ne voyais pas comment faire pour faire perdre le focus même sans qu'un autre contrôle le prenne.

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Par défaut
    fait un petit exemple ca sera plus clair
    un projet complet

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Par défaut
    @ikeas :
    Des exemples de TextBlock éditables, tu en as sur la toile.

    @Cecile5 :
    Cette solution veut dire abonner tous les contrôles de la fenêtre ne prenant pas le focus à MouseDown. Ça peut vite devenir fastidieux. Mais ça peut peut-être faire l'affaire dans certains contextes...

  7. #7
    Membre éclairé
    Inscrit en
    Novembre 2008
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 97
    Par défaut
    Hello,
    Voici un petit bout de code qui j'espère fait ce que tu veux.
    Il n'est pas très propre, à voir si tu peux l'améliorer.

    Le xaml:
    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
    <Grid>   
            <Grid.RowDefinitions>
                <RowDefinition />
                <RowDefinition />
            </Grid.RowDefinitions>
     
            <Rectangle MouseDown="Rectangle_MouseDown" Fill="Aqua" Grid.RowSpan="2" />
     
            <TextBox x:Name="MyTxtBox" Text="Click pour modifier" Width="150" Height="30" Visibility="Hidden"></TextBox>
            <TextBlock x:Name="MyTxtBlock" MouseDown="MyTxtBlock_MouseDown" Text="{Binding ElementName=MyTxtBox,Path=Text}" Width="150" Height="30" Padding="5,3,0,0"/>
     
            <TextBox Grid.Row="1" x:Name="MyTxtBox2" Text="Click pour modifier" Width="150" Height="30" Visibility="Hidden"></TextBox>
            <TextBlock Grid.Row="1" x:Name="MyTxtBlock2" MouseDown="MyTxtBlock2_MouseDown" Text="{Binding ElementName=MyTxtBox2,Path=Text}" Width="150" Height="30" Padding="5,3,0,0"/>
     
        </Grid>
    Le code behind (je n'ai pas suivi le pattern MVVM pour ce petit exemple):
    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
    private void Rectangle_MouseDown(object sender, MouseButtonEventArgs e)
            {
                MyTxtBlock.Visibility = Visibility.Visible;
                MyTxtBox.Visibility = Visibility.Hidden;
     
                MyTxtBlock2.Visibility = Visibility.Visible;
                MyTxtBox2.Visibility = Visibility.Hidden;
            }
     
            private void MyTxtBlock_MouseDown(object sender, MouseButtonEventArgs e)
            {
                MyTxtBlock2.Visibility = Visibility.Visible;
                MyTxtBox2.Visibility = Visibility.Hidden;
     
                MyTxtBlock.Visibility = Visibility.Hidden;
                MyTxtBox.Visibility = Visibility.Visible;
                MyTxtBox.Focus();
            }
     
            private void MyTxtBlock2_MouseDown(object sender, MouseButtonEventArgs e)
            {
                MyTxtBlock.Visibility = Visibility.Visible;
                MyTxtBox.Visibility = Visibility.Hidden;
     
                MyTxtBlock2.Visibility = Visibility.Hidden;
                MyTxtBox2.Visibility = Visibility.Visible;
                MyTxtBox2.Focus();
            }
    Bon courage.

Discussions similaires

  1. Réponses: 4
    Dernier message: 06/05/2011, 16h52
  2. Réponses: 1
    Dernier message: 18/04/2007, 13h39
  3. Réponses: 18
    Dernier message: 13/12/2005, 13h27
  4. Réponses: 2
    Dernier message: 10/03/2004, 18h52
  5. Déterminer l'application qui a le Focus
    Par JakeGrafton dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 22/02/2004, 12h52

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