none
Comment donner le focus a un textbox d'un groupbox dans l'evenement EnabledChanged de ce groupbox ? RRS feed

  • Discussion générale

  • Bonjour,

    j'ai un groupbox avec mes textbox de saisie. Pour accéder à une liste des enregistrements, je fais afficher une liste au premier plan dans un autre groupbox. La propriété Enable de mon premier groupbox passe alors à False. Lorsque l'utilisateur sélectionne un enregistrement dans la liste, je fais dispaître la liste et repasse la propriété Enable de mon premier groupbox à True.

    J'utilise l’événement EnabledChanged du groupbox pour remplir mes textbox par rapport à l'enregistrement selectionné puis j'essaye de donner le focus à un de ses textbox mais ça n'a aucun effet quand j'appelle textbox.focus dans EnabledChanged du groupbox.

    Si quelqu'un pouvait m'aider, je vous remercie d'avance


    • Type modifié Ciprian Duduiala jeudi 14 juillet 2011 11:34 attente de feedback
    vendredi 8 juillet 2011 12:57

Toutes les réponses

  • Bonjour,

    En effet en utilisant la propriété CanFocus du textbox on voit que le focus ne peut pas se faire

    Public Class Form1
     Private Sub GroupBox1_EnabledChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GroupBox1.EnabledChanged
      If TextBox2.CanFocus Then
       TextBox2.Focus()
      Else
       MessageBox.Show("le controle ne peut pas recevoir le focus")
      End If
      TextBox2.Focus()
      If GroupBox1.ContainsFocus Then
       MessageBox.Show("un textbox a le focus")
      Else
       MessageBox.Show("aucun textbox n'a le focus")
      End If
     End Sub
    
     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
      If GroupBox1.Enabled = True Then
       GroupBox1.Enabled = False
      Else
       GroupBox1.Enabled = True
      End If
     End Sub
    
     Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      GroupBox1.Controls.Add(TextBox1)
      GroupBox1.Controls.Add(TextBox2)
     End Sub
    End Class
    



    fred
    vendredi 8 juillet 2011 14:28
  • Merci pour ce test Fred.

    Est ce qu'il y a un moyen de contourner cette limitation car c'est étrange je test bien que le groupbox.enable=true dans enabledChanged et c'est le cas donc je ne vois pas pourquoi un objet donc le conteneur est enable ne peut recevoir le focus.

    lundi 11 juillet 2011 07:57
  • Bonjour,

    J'ai bien essayé dans tous les sens et je n'ai pas trouvé de réponse.

    La seule solution que je vois c'est d'enlever le groupbox car sans, cela marche

     


    fred
    lundi 11 juillet 2011 12:02
  • J'ai aussi essayé pas mal de chose aussi mais sans succès.

    Malheureusement dans mon cas, je suis obligé de garder ce système de groupbox.

    lundi 11 juillet 2011 13:42
  • Bonjour,

    Il faut s’assurer l’instruction GroupBox.Enabled = True est faite avant donner le focus à un TextBox. J’ai teste et ça marche même si vous le faites dans l’évènement GroupBox1_EnabledChanged, mais vous dites que pour vous il ne fonctionne pas. Essayez à modifier l’évènement Button1_Click par :

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

            If GroupBox1.Enabled = True Then

                GroupBox.Enabled = True

                GroupBox1.Enabled = False

            Else

                GroupBox1.Enabled = True

                GroupBox.Enabled = False

            End If

        End Sub

     

    mais je doute qu’il va changer la situation.   

     

    En cas que cette solution ne résoudre pas votre problème, il faut nous montrer votre code pour reproduire le contexte de votre application. Sinon, il sera difficile vous donner une solution.

     

    Bonne journée,

    Cipri

     


    Suivez MSDN sur Twitter   Suivez MSDN sur Facebook


    Ciprian DUDUIALA, MSFT  
    •Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.

    mardi 12 juillet 2011 09:22
  • Le contexte est similaire à celui de l'exemple de Fred75 à la seule différence que le GroupBox1.Enabled = True est appelé dans le OnDoubleClick & le OnKeyDown de la liste et non dans un button1_click

    Mais déjà avec l'exemple du bouton présenté par Fred75, j'ai exactement le même problème. Je ne comprend pas trop votre code à modifier dans le button1_click : par groupbox.enabled=true vous modifiez la propriété de la classe et pas de l'objet groubox1 ?? Personnellement j'ai une erreur  de référence à un membre non partagé quand je copie/colle votre code tel quel.

     

    mardi 19 juillet 2011 07:49