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 :

Accéder aux propriétés de usercontrol dans un tabcontrol


Sujet :

VB.NET

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Accéder aux propriétés de usercontrol dans un tabcontrol
    bonjour à tous
    débutant en VB.net mais ancien de VB6, j'essaie de réaliser un petit soft connecté à une base de données. Ce soft va utiliser un tabcontrol, et c'est là que les ennuis commencent...
    cela fait des heures que je cherche une solution, mais je ne trouve rien qui corresponde à mon problème et qui fonctionne...
    j'ai créé un tabcontrol, avec 2 onglets. Dans le 1er onglet, j'ai positionné un usercontrol qui comprend plusieurs textbox. J'ai créé les propriétés dans le usercontrol me permettant d'accéder aux valeurs "text" des textbox.
    j'essaie maintenant d'affecter dynamiquement des valeurs aux différentes textbox de mon usercontrol.
    j'ai essayé tabcontrol.tabpages(tabcontrol.tabpages.count).controls(usercontrol).text mais le "controls" est souligné, il ne reconnait pas "usercontrol" comme parametre. Quelqu'un pourrait il m'indiquer la syntaxe correcte SVP ??
    merci par avance pour votre aide !!
    michael

  2. #2
    Membre actif
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2016
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2016
    Messages : 154
    Points : 268
    Points
    268
    Par défaut
    Bonjour,
    tu peux utiliser directement tes texbox avec leur nom sans passer par tabcontrol. Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    me.texbox1.text ="Pierre"

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Bonsoir prisson et merci pour ta reponse. Dans mon cas je ne pense pas que ce soit applicable. Mes textbox etant dans un usercontrol, je me sers de la propriété du usercontrol. Le usercontrol est créé dynamiquement, un par onglet créé (la quantité dépendant d'une entrée en base). J'ai donc l'impression qu'acceder aux propriétés via les noms des usercontrol serait plus propre.
    Par contre je vais essayer de voir si cette solutoon fonctionne pareil sur les usercontrol. Comme tu le dis si bien, ca eviterait de passer par le tabcontrol, ce qui m'irait tres bien !
    Si une autre solution existe, au cas où celle ci ne fonctionnerait pas, je suis preneur !
    Merci encore

  4. #4
    Membre actif
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2016
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2016
    Messages : 154
    Points : 268
    Points
    268
    Par défaut
    Bonjour,
    Marque le sujet en résolu si la solution a fonctionné.

  5. #5
    Membre expérimenté
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Points : 1 745
    Points
    1 745
    Par défaut
    Bonjour
    Tu as plusieurs méthodes pour cela. La plus proche de ce que tu cherches à faire serait un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CType(TabControl1.TabPages(0).Controls(0), UserControl1).MonText = "..."
    Mais c'est pas franchement beau.
    Je pense que le mieux serait de créer une liste de UserControl et d'accéder à ton UserControl via cette liste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim myList As List(Of UserControl1) = New List(Of UserControl1)
    ...
    Dim MonControl As UserControl1 = New UserControl1()
    TabControl1.TabPages(0).Controls.Add(MonControl)
    myList.Add(MonControl)
    myList(0).MonText() = "toto"
    Bon tu l'auras compris, les noms et indices utilisés sont uniquement là à titre d'exemple. C'est à adapter...

  6. #6
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    233
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 233
    Points : 336
    Points
    336
    Par défaut
    tabcontrol.tabpages(tabcontrol.tabpages.count).controls(usercontrol).text
    Attention, TabPages et Controls sont des listes, donc on peut accéder à un item de la liste que par son index (integer) ou une clé (string du coup ^^).

    De mémoire, accéder à tes TextBox ressemblerait plus à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CType(TabControl1.TabPages(i).Controls("NomDuUserControl").Controls("NomDeLaTextBox"), TextBox).Text = "..."
    Mais vu que tu as décidé d'y accéder via des accesseurs (avec le set en public)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TabControl1.TabPages(i).Controls("NomDuUserControl").TaProprieteText = "..."
    Où i est l'index de ta TabPage où se trouvent ton UserControl.

    Je déconseille la technique de ebastien, tout simplement parce que c'est réinventer le fil à couper le beurre : Prendre le contenu d'une liste pour le mettre dans une autre liste identique ?
    "Hope for the best, but prepare for the worst."

  7. #7
    Membre expérimenté
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Points : 1 745
    Points
    1 745
    Par défaut
    Bonjour,

    @casiii : Ok c'est vrai que ma methode crée une nouvelle liste. Mais pas tout à fait identique : La différence c'est qu'elle est typée et donc évite le transtypage systématique pour accéder au usercontrol (ton deuxième exemple ne fonctionne pas tel quel). De plus, j'avoue que j'ignorais qu'on pouvait créer differentes instances d'un Control avec le même nom. Au temps pour moi...

Discussions similaires

  1. Réponses: 5
    Dernier message: 11/02/2010, 16h45
  2. [Smarty] Comment accéder aux propriétés d'un objet dans un objet ?
    Par Tanebisse dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 18/11/2008, 12h36
  3. Réponses: 5
    Dernier message: 20/08/2008, 17h52
  4. Accéder aux propriétés d'une feuille de style liée
    Par b Oo dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 30/05/2006, 08h34
  5. [C#]Accéder aux propriétés d'un User Control
    Par djoao dans le forum Windows Forms
    Réponses: 6
    Dernier message: 10/03/2006, 09h54

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