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

VC++ .NET Discussion :

Donner le Focus � un Usercontrol dupliqu�


Sujet :

VC++ .NET

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Analyse syst�me
    Inscrit en
    Septembre 2018
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    �ge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activit� : Analyse syst�me

    Informations forums :
    Inscription : Septembre 2018
    Messages : 7
    Par d�faut Donner le Focus � un Usercontrol dupliqu�
    Bonjour � tous !

    Cela fait 2 jours que je me prends la t�te pour quelque chose qui parrait tellement simple mais qui en r�alit� pour moi sav�re une grosse gal�re.

    J'ai une Form1 qui contient un Flowlayoutpanel1 dans le quelle se duplique un Usercontrol qui contient une Checkbox, une Textbox et un bouton Delete.

    "La Checkbox sert � afficher le bouton Delete"

    A chaque fois que l'on scanne une r�f�rence dans la textbox automatiquement le Usercontrol se duplique en dessous et ainsi de suite.

    Le probl�me arrive maintenant !

    Imaginons que je viens de scanner "x" r�f�rence et que tout d'un coup je me trompe et que je dois supprimer une ligne.

    Je clique sur ma Checkbox de la ligne a supprimer et ensuite je clique sur le bouton Delete.

    Mais maintenant mon Focus n'est plus sur la Textbox de mon dernier Usercontrol tout en dessous.

    J'ai d�j� tent� de mettre textbox1.select sur mon bouton delete mais automatiquement ses la textbox1 de mon usercontrol tout en haut de la liste qui est s�lectionn�.

    Hors que moi je cherche que �a soit le dernier tout en bas de ma liste.

    J'ai d�j� tent� de faire une commande pour r�cup�rer qui avait en dernier le Focus mais cela n'a pas fonctionn� non plus.

    Je pr�cise aussi que a chaque fois qu'un usercontrol est valid� via la touche enter, automatiquement la textbox1 du control pr�c�dent passe en Enabled = False

    Donc � chaque fois dans mon flowlayoutpanel je n'ai qu'une seul textbox1 qui est Enabled = True. Je ne sais pas si cela peut donner une solution pour la retrouver et lui donner le focus.

    Si quelqu'un aurait une solution � me pr�senter ou une piste pour que je puisse corriger se probl�me je serai vraiment tr�s Heureux !

    Merci d'avance.

  2. #2
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    D�j�, comment g�res-tu la liste de tes usercontrol? Laisses-tu enti�rement le flowlayoutpanel g�rer tout �a, ou maintiens-tu une liste s�par�e avec laquelle tu updates le flowlayoutpanel?
    Enfin toujours est-il, je pense que pour la gestion de ton bouton Delete du devrais:
    1. Trouver le usercontrol qui a le focus, ou simplement le premier usercontrol coch�
    2. Trouver le premier usercontrol non-coch� apr�s celui-ci, m�moriser la r�f�rence
    3. Supprimer ce qu'il faut supprimer
    4. Faire un Select() sur la textbox du usercontrol m�moris� en 2.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Analyse syst�me
    Inscrit en
    Septembre 2018
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    �ge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activit� : Analyse syst�me

    Informations forums :
    Inscription : Septembre 2018
    Messages : 7
    Par d�faut
    Salut Medinoc,
    Alors pour commencer je laisse g�rer mon flowlayout panel.
    En gros � chaque fois que la textbox est valid� avec les touche enter je demande de rajouter un nouveau usercontrol juste en dessous.
    Pour le bouton delete je l'ai rajouter directement sur le usercontrol pour justement �viter de devoir chercher toute les checkbox s�lectionner dans la liste. Donc chaque ligne a son propre bouton delete.
    Le probl�me est que je ne comprends pas comment je pourrais rechercher quelques choses dans mon flowlayout panel hors que tous mes usercontrol se nomme usercontrol1.
    Je suppose qu'il devrait y avoir une commande pour dire s�lectionner le dernier usercontrol dans le flowlayoutpanel ou quelques choses de se genre.
    J'ai d�j� tent� tellement de commande et de possibilit� qu'� force je me dit que cela n'est pas possible. En tout cas merci de te pencher sur mon probl�me.

  4. #4
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    As-tu essay� la propri�t� Controls de ton FlowLayoutPanel?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Analyse syst�me
    Inscrit en
    Septembre 2018
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    �ge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activit� : Analyse syst�me

    Informations forums :
    Inscription : Septembre 2018
    Messages : 7
    Par d�faut
    Oui j'ai m�me commenc� par �a. Je ne sais pas te fournir mon code exacte car je ne suis pas sur mon pc actuellement mais c'�tait quelques choses comme �a :

    Code vba : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim count As Integer = CountVisibleChildControls(Of UserControl1)(Form1.FlowLayoutPanel1)
          Dim ctrls() As Control = Form1.FlowLayoutPanel1.Controls.Find("usercontrol1", False)
     
          For Each c As Control In ctrls
              c.Select()
          Next
     
          If (ctrls.Length > 0) Then
              ctrls(count).Select()
          End If
     
      End Sub

    C'est juste un exemple. Mais le code n'a strictement eu aucun effet. Pas d'erreur non plus.

  6. #6
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 503
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 503
    Par d�faut
    C'est pas cool de nous snober.

    Et Ici, c'est du C++/CLI, pas du VB.NET.

    Pouvez-vous r�pondre � mes questions, avant que je demande le transfert vers le bon forum ?

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    Analyse syst�me
    Inscrit en
    Septembre 2018
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    �ge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activit� : Analyse syst�me

    Informations forums :
    Inscription : Septembre 2018
    Messages : 7
    Par d�faut
    Je vous snob pas du tout bacelar

    J'agrandis juste mon centre de recherche.

    Mais finalement j'ai r�ussi � r�soudre mon probl�me que j'irai bien �videmment poster de l'autre cot�.

    Alors maintenant explication...

    J'ai constat� que quand mon focus est situ� sur un bouton sur ma Form1 et que je faisais un SHIFT TAB automatiquement le focus repartait sur le dernier control de mon flowlayoutpanel
    Donc voil� maintenant quand je clique sur le bouton Delete, je demande de positionner le focus sur le Bouton de ma form1 et j'envoi un SendKeys avec SHIFT TAB et le tour est jou� !
    En tout cas merci quand m�me pour votre aide !

  8. #8
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 503
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 503
    Par d�faut
    OK.

    Merci pour votre retour et votre solution.

    Je la trouve un peu trop bricolage pour moi.

    Si vous ajoutez un contr�le qui change la "s�quence Tab" de votre formulaire, CABOOM !
    Si une entr�e clavier arrive entre ces bidouilles, CABOOM !
    etc...

    Je ne comprends pas pourquoi faire une approche aussi complexe quand le controle � activer doit juste �tre le dernier de la liste "Controls" de votre "FlowLayoutPanel1".

    Si vous pouvez poster le code de la form et de l'user-controle pour v�rifier pourquoi la solution "�vidente" ne fonctionne pas, �a serait pas mal.

  9. #9
    Nouveau membre du Club
    Femme Profil pro
    Analyse syst�me
    Inscrit en
    Septembre 2018
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    �ge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activit� : Analyse syst�me

    Informations forums :
    Inscription : Septembre 2018
    Messages : 7
    Par d�faut
    Re Bacelar,

    Je sais bien que c'est du bricolage mais apr�s c'est vraiment pour d�panner.
    Le programme est cens� tourner sur avec juste un scanner en main et donc pas de risque d'appuyer sur un touche pendant la microseconde ou le programme envoi le Shift TAB.
    Apr�s il faut jamais dire jamais

    Mais bon, j'ai tellement chercher pour r�ussir a faire se truc minable que cela me convient.
    M�me si je te fais un copier coller du code de mon usercontrol, cela te ferais tr�s mal au yeux je penses.

    Apr�s je suis sur qu'il doit y avoir un b�te code qui pourrait permettre de s�lectionner le dernier control du flowlayoutpanel mais je n'en trouve pas.
    J'ai trouv� le code que j'ai post� ci-dessus mais je n'arrive pas � l'adapter � mes besoins.

    En tout cas merci quand m�me !

  10. #10
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 503
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 503
    Par d�faut
    A l'arrache :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
          If (Form1.FlowLayoutPanel1.Controls.Length > 0) Then
              Form1.FlowLayoutPanel1.Controls(Form1.FlowLayoutPanel1.Controls.Length-1).Select()
          End If

  11. #11
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Citation Envoy� par bacelar Voir le message
    A l'arrache :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
          If (Form1.FlowLayoutPanel1.Controls.Length > 0) Then
              Form1.FlowLayoutPanel1.Controls(Form1.FlowLayoutPanel1.Controls.Length-1).Select()
          End If
    +1

    Ou pour �tendre avec le coup de la TextBox, un truc de ce genre:
    Code VB.Net : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    	If (Form1.FlowLayoutPanel1.Controls.Length > 0) Then
    		Dim lastControl As UserControl1
    		lastControl = CType(UserControl1, Form1.FlowLayoutPanel1.Controls(Form1.FlowLayoutPanel1.Controls.Length-1))
    		lastControl.textBox1.Select()
    	End If
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  12. #12
    Nouveau membre du Club
    Femme Profil pro
    Analyse syst�me
    Inscrit en
    Septembre 2018
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    �ge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activit� : Analyse syst�me

    Informations forums :
    Inscription : Septembre 2018
    Messages : 7
    Par d�faut
    Merci beaucoup pour vos r�ponses mais bien �videment je n'ai pu m'emp�cher d'essayer � l'instant

    Et le probl�me est que Length n'est pas un membre de Control.ControlCollection.

  13. #13
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 503
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 503
    Par d�faut
    Ok, mon code "� l'arrache" �tait bas� sur votre code et fait � l'arrache donc.
    Comme on n'arr�te pas le progr�s, la propri�t� Count de Control.ControlCollection � d�gager depuis .NET2.0, mais on va pas s'arr�ter pour si peu.

    Toujours � l'arrache, mais en ayant un peu plus lu la documentation (ce que vous devriez aussi faire ) :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
          Dim ctrls() As Control = Form1.FlowLayoutPanel1.Controls.Find("usercontrol1", False)
     
          If (ctrls.Length > 0) Then
              ctrls(ctrls.Length-1).Select()
          End If

  14. #14
    Nouveau membre du Club
    Femme Profil pro
    Analyse syst�me
    Inscrit en
    Septembre 2018
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    �ge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activit� : Analyse syst�me

    Informations forums :
    Inscription : Septembre 2018
    Messages : 7
    Par d�faut
    Bonjour Bacelar,

    Cette commande l� je l'avais d�j� essay� et elle ne fonctionnait pas.
    Je l'avais d�j� inscrite plus haut

    Mais pour �tre sur j'ai quand m�me essayer � nouveau et PAF �a fonctionne toujours pas
    Mais bon c'est pas gr�ve, j'ai toujours mon plan B pour l'instant.

    Bonne journ�e !

  15. #15
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 503
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 503
    Par d�faut
    Cette commande l� je l'avais d�j� essay� et elle ne fonctionnait pas.
    C'est � dire ?
    Utilisez un d�bogueur.
    �a aussi simple que "usercontrol1" n'est pas le nom de vos contr�les, etc...
    Le d�bogueur est ton ami.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [VB.net] Donner le focus a un Form
    Par Manix dans le forum Windows Forms
    R�ponses: 23
    Dernier message: 01/08/2005, 02h59
  2. Donner le focus � un JPanel dans un autre JPanel
    Par Azanael dans le forum Agents de placement/Fen�tres
    R�ponses: 17
    Dernier message: 21/06/2005, 23h34
  3. donner le focus sur un composant dont la fenetre est invisib
    Par yoghisan dans le forum Composants VCL
    R�ponses: 12
    Dernier message: 17/06/2005, 16h27
  4. [debutant]donner le focus
    Par adilou1981 dans le forum G�n�ral JavaScript
    R�ponses: 2
    Dernier message: 07/06/2005, 17h30
  5. R�ponses: 4
    Dernier message: 18/05/2005, 14h08

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