none
Récupérer le contenu de tabs créés dynamiquement RRS feed

  • Question

  • Bonjour à tous,

    dans mon application, je génère dynamiquement des onglets (tab) dans lesquels vient se mettre un user control.

    Lorsque je clique sur un bouton contenu dans le user control, je souhaite récupérer des infos des TextBox de l'onglet sur lequel je suis.

    Le problème est que je récupère le contenu des TextBox du dernier onglet généré. Je n'arrive pas à récupérer les contenu de l'onglet sélectionné.

    Voici mon code:

    Génération des onglets avec les user control

    private void InsertTabCownt()
            {
                TabControl tc = new TabControl();
                TabPage Tpage = new TabPage();
                TabUC tuc = new TabUC();
                NewUserUC newUser = new NewUserUC();
    
                LoginUC login = new LoginUC();
                UserEntity user;
    
                DataTable dt = CategoryEntity.GetCategories(user.Id);
                login.Visible = false;
                menuTop.Visible = true;
                foreach (DataRow dr in dt.Rows)
                {
                    Tpage = new TabPage();
                    tuc = new TabUC();
                    Tpage.Text = dr["Description"].ToString();
                    tc.Dock = DockStyle.Fill;
                    tuc.Dock = DockStyle.Fill;
                    tuc.btnNewTab.Click += new EventHandler(CreateNewTab_Click);
                    tuc.btnEditTab.Click += new EventHandler(EditTab_Click);
                    tuc.CancelBTN.Click += new EventHandler(Cancel_Click);
                    tuc.btnAddAccount.Click += new EventHandler(AddAnAccount_Click);
                    tuc.tbTitleCownt.Text = dr["Description"].ToString();
                    Tpage.Controls.Add(tuc);
                    tc.Controls.Add(Tpage);
                    tlpMain.Controls.Add(tc, 0, 1);
                }
            }

    Et mon événement Click bouton qui doit récupérer le contenu:

    private void AddAnAccount_Click(object sender, EventArgs e)
            {
                AccountEntity newAccount = new AccountEntity();
    
                newAccount.Title = this.tuc.tbTitleCownt.Text;
                newAccount.UserName = this.tuc.tbUserName.Text;
                newAccount.Password = this.tuc.tbPassword.Text;
                newAccount.Email = tuc.tbEmail.Text;
                newAccount.UrlWebsite = tuc.tbWebsite.Text;
                newAccount.CreationDate = tuc.dtpDateCreation.Value;
                newAccount.SecurityQuestion = tuc.tbSecurityQuestion.Text;
                newAccount.SecurityAnswer = tuc.tbSecurityAnswer.Text;
            }

    Auriez-vous une idée?

    Merci pour votre aide

    vendredi 12 décembre 2014 07:26

Réponses

  • Bonjour,

    j'ai finalement résolu mon problème en gérant la récupération du contenu de ma textBox directement dans le code de mon UserControl et non plus depuis mon Form principal.

    Cette solution est me semble-t-il plus logique et plus simple puisque le bouton (qui génère l'Event) et le TextBox sont sur le même UserControl. Je récupère donc le contenu du TextBox correspondant chaque fois au Tab généré dynamiquement.

    Merci à tous pour vos conseils et votre aide.

    Sujet résolu

    • Marqué comme réponse paintbox00 dimanche 14 décembre 2014 22:25
    dimanche 14 décembre 2014 22:24

Toutes les réponses

  • Bonjour,

    Je pense que vous récupérez le dernier créer car vous chercher dans votre variable tuc qui contient la dernier instanciation de TabUC. 

    Pour résoudre votre problème, vous devriez passer par le sender de votre méthode AddAnAccount_Click qui contient l'instance appelée par le bouton.

    Cordialement

    Cédric

    • Proposé comme réponse PhGr_ vendredi 12 décembre 2014 09:21
    vendredi 12 décembre 2014 08:11
  • Bonjour,

    Voici un ex :

    PrivateSub TabClients_SelectedIndexChanged(ByVal sender AsObjectByVal e As System.EventArgs) Handles TabClients.SelectedIndexChanged         Dim Index AsInteger = TabClients.SelectedIndex         SelectCase Index             Case 0                 Menugenrnouvdev.Visible = False                 gereOuvrzgeToolStripMenuItem.Visible = False                 Menugenerer.Visible = False

    Case 1                 Menugenrnouvdev.Visible = True                 gereOuvrzgeToolStripMenuItem.Visible = True                 Menugenerer.Visible = False

    Case 2                 Menugenrnouvdev.Visible = False                 gereOuvrzgeToolStripMenuItem.Visible = False                 Menugenerer.Visible = False             End select

    End sub

        Bonne journée

    Jacky

                             


    Jbenon

    vendredi 12 décembre 2014 11:01
  • Bonjour,

    La réponse est liée à Visual Basic, mais je vous propose d'essayer de convertir avec C#:
    Snippet Converter for .NET 4.0
    Merci de nous tenir au courant.

    Cordialement,
    Téodora


    Votez! Appel à la contribution TechNet Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    vendredi 12 décembre 2014 15:59
    Modérateur
  • Bonjour,

    Avez-vous pu convertir mon exemple.

    Merci de mettre un retour.

    Jacky


    Jbenon

    samedi 13 décembre 2014 10:07
  • Bonjour,

    j'ai finalement résolu mon problème en gérant la récupération du contenu de ma textBox directement dans le code de mon UserControl et non plus depuis mon Form principal.

    Cette solution est me semble-t-il plus logique et plus simple puisque le bouton (qui génère l'Event) et le TextBox sont sur le même UserControl. Je récupère donc le contenu du TextBox correspondant chaque fois au Tab généré dynamiquement.

    Merci à tous pour vos conseils et votre aide.

    Sujet résolu

    • Marqué comme réponse paintbox00 dimanche 14 décembre 2014 22:25
    dimanche 14 décembre 2014 22:24