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 :

focus sur un COMBOX dès le chargement de la page


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    535
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 535
    Par défaut focus sur un COMBOX dès le chargement de la page
    salut à tous

    comme souvent, je vais faire appel à vos lumières sur un truc, à mon avis basique pour les spécialistes que vous êtes, mais qui me coûte des cheveux depuis un moment!
    je viens d'arriver sur un projet que je découvre, mais que j'essaye déjà d'améliorer...

    en gros:
    -> la fenêtre principale, avec un bouton qui ouvre en avant plan un autre écran permettant de sélectionner des villes de départs/arrivés (2 combox)
    -> les 2 combox sont alimentés par 2 binding, les data sont là, no problemo
    -> pour choisir ses villes départ/arrivée
    * soit par saisie et autocomplétion (si ville trouvée)
    * soit sélection avec la souris (basique)

    ce que je voudrais:
    -> mettre d'office le focus sur le 1er combox, pour commencer à saisir au clavier MAIS SANS devoir cliquer dessus d'abord

    je suppose qu'un truc aussi basique est forcément possible!!
    et pourtant, j'ai déjà essayé 12 000 trucs en ligne sans qu'aucun ne me donne satisfaction... ni même un banal combox.Focus();

    donc, votre avis là dessus?

    toute aide sera appréciée...
    merci

    selection.xaml
    Code XAML : 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
    64
    65
    <UserControl x:Class="ProjectGUI.View.Selection"
                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
                 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
                 xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
                 mc:Ignorable="d" 
                 d:DesignHeight="500" d:DesignWidth="400">
     
        <DockPanel LastChildFill="False">
     
            <ComboBox DockPanel.Dock="Top"
                      TabIndex="0"
    				  x:Name="Deroulant0"
                      ItemsSource="{Binding Stops}"
                      SelectedItem="{Binding SStop0}"
                      Text="Sélectionner départ"
                      IsEditable="True" IsReadOnly="False"
                      HorizontalAlignment="Left"
                      Margin="20"
                      Width="200">
     
                <i:Interaction.Triggers>
                    <i:EventTrigger EventName="KeyDown">
                        <i:InvokeCommandAction Command="{Binding Stop0ModifieCommand}"/>
                    </i:EventTrigger>
                    <i:EventTrigger EventName="DropDownClosed">
                        <i:InvokeCommandAction Command="{Binding Stop0ModifieCommand}"/>
                    </i:EventTrigger>
     
                </i:Interaction.Triggers>
     
            </ComboBox>
     
            <ComboBox DockPanel.Dock="Top"
                      x:Name="Deroulant1"
                      ItemsSource="{Binding AccessibleStops}"
                      SelectedItem="{Binding SStop1}"
                      Text="Sélectionner arrivée"
                      IsEditable="True" IsReadOnly="False"
                      HorizontalAlignment="Left"
                      Margin="20"
                      Width="200">
     
                <i:Interaction.Triggers>
                    <i:EventTrigger EventName="KeyDown">
                        <i:InvokeCommandAction Command="{Binding Stop1ModifieCommand}"/>
                    </i:EventTrigger>
                    <i:EventTrigger EventName="DropDownClosed">
                        <i:InvokeCommandAction Command="{Binding Stop1ModifieCommand}"/>
                    </i:EventTrigger>
                </i:Interaction.Triggers>
            </ComboBox>
     
            <Button DockPanel.Dock="Top"
                    x:Name="ComputeAndStartButton"
                    Command="{Binding ComputeAndStartCommand}"
                    HorizontalAlignment="Left"
                    Margin="20"
                    Width="Auto" Height="Auto">
                Calculer et lancer
            </Button>
     
        </DockPanel>
    </UserControl>

    selection.xaml.cs
    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
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Navigation;
    using System.Windows.Shapes;
     
    namespace ProjectGUI.View
    {
        /// <summary>
        /// Logique d'interaction pour Selection.xaml
        /// </summary>
        public partial class Selection : UserControl
        {
            public Selection()
            {
                InitializeComponent();
                Deroulant0.Focus();
            }
     
        }
    }

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 943
    Par défaut
    As-tu essayé sur le usercontrol ou le dockpanel ?

    FocusManager.FocusedElement="{Binding ElementName=Deroulant0}"

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    535
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 535
    Par défaut
    Non, comme ils contiennent plusieurs contrôles... mais je vais essayer de ce pas...

    Verdict: ne change rien.

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    535
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 535
    Par défaut
    Ok, j'ai trouvé!

    J'explique le pourquoi du comment, pour d'autres débutants:

    - Deroulant0.Focus(); fonctionne bien... SI on le place au bon endroit!!

    - InitializeComponent(); étant visiblement asynchrone (chargement des data binding), l'écran contenant le combobox en question, lui, n'est pas encore affiché, en sortie d'initialisation

    - il faut donc
    * rajouter un tag Loaded="SelectionPanel_Loaded" dans le fichier .xaml
    * placer le code dans la méthode Loaded associée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     private void SelectionPanel_Loaded(object sender, RoutedEventArgs e)
            {
                SelectionPanel.Deroulant0.Focus();        
            }
    voilà, voilà.


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

Discussions similaires

  1. Focus sur un champ de formulaire au chargement de la page
    Par feanor11 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 01/11/2006, 20h43
  2. Focus sur DrawGrid
    Par zworg dans le forum Composants VCL
    Réponses: 4
    Dernier message: 03/05/2004, 13h44
  3. [VB.NET] Focus sur cellule de DataGrid
    Par daner06 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 02/05/2004, 21h12
  4. Réponses: 2
    Dernier message: 19/08/2003, 15h45
  5. Ne jamais mettre le focus sur un tbutton, possible
    Par portu dans le forum Composants VCL
    Réponses: 4
    Dernier message: 03/07/2003, 15h06

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