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

VB.NET Discussion :

Focus sur un TableLayoutPanel


Sujet :

VB.NET

Vue hybride

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 13
    Par défaut Focus sur un TableLayoutPanel
    Bonjour,
    dans mon appli j'ai un TableLayoutPanel de 4 lignes, 5 colonnes. Dans la ligne 3, colonne 4 j'ai un RichTextBox. Je voudrai donner le Focus() sur ce contrôle.
    J'ai testé plusieurs choses:
    TableLayoutPanel1.GetControlFromPosition(4, 3).Focus() ==> ne marche pas

    ou bien
    RichTextBox_c0.Focus() ==> ne marche pas non plus.

    Je précise que cette ligne
    TableLayoutPanel1.GetControlFromPosition(4, 3).Text = "3" ==> modifie bien mon RichTextBox

    Quelqu'un a t-il une idée à me proposer ?

    Merci.

  2. #2
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    RichTextBox_c0.Focus()
    ActiveControl = RichTextBox_c0
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    TableLayoutPanel1.GetControlFromPosition(4, 3).Focus()
    ActiveControl = TableLayoutPanel1.GetControlFromPosition(4, 3)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 13
    Par défaut
    Bonjour,

    J'ai testé la modif en mettant le tout dans l'évènement click sur un Bouton est là ça fonctionne avec ou sans la ligne commenté. Par contre à l'origine je souhaite activé le focus sur mon RichtextBox dans l'évènement TabPage2.Enter, puisque mon TableLayout est dans un TabPage.

    Le fonctionnement attendu est que lorsque je sélectionne le TabPage, le focus est donné à mon RichTextBox, et dans ce cas précis les 2 lignes de code ne fonctionnent toujours pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
           TableLayoutPanel1.GetControlFromPosition(4, 3).Focus()
            'ActiveControl = TableLayoutPanel1.GetControlFromPosition(4, 3)
        End Sub

    Comme le problème semble venir de l’événement TabPage.enter j'ai testé sur l'évènement TabControl1.SelectedIndexChanged et là ça fonctionne.
    Du coup avant de marquer le tout comme résolu, je m'interroge. Pourquoi ce même code ne fonctionne pas sur l'évènement TabPage.Enter, et fonctionne sur TabControl.SelectedIndexChanged ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub TabControl1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TabControl1.SelectedIndexChanged
            TableLayoutPanel1.GetControlFromPosition(4, 3).Focus()
        End Sub
    Si vous avez des pistes ?

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    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 202
    Par défaut
    en windows forms certaines choses sont faites dans un ordre précis, et de manière interne
    donc ton event enter est surement levé avant que le moteur de windows forms ne fasse autre chose qui donne le focus, annulant ce que tu as fait précédemment
    (par exemple je crois que le focus est donné par défaut au controle ayant le plus petit tabindex)

    on ne peut pas non plus définir le focus sur le constructeur d'un form, car le form n'est pas encore affiché
    alors que si on le fait sur l'event form_load qui est levé après que tout ait été initialisé et affiché ca fonctionne
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 13
    Par défaut
    OK merci pour l'info

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

Discussions similaires

  1. Focus sur une application Windows
    Par mixi dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 13/10/2004, 19h57
  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