Solved

Accessing dynamically created controls on windows form

Posted on 2009-07-09
1
602 Views
Last Modified: 2013-12-17
Hi all,

I have a .net TabControl - the tabs of which I am dynamically creating.  Each tab has a form on it consisting of labels, textboxes, buttons and a datagrid.  I am able to create the tabs just fine, however once a tab is created how do I access the dynamically created controls on it (i.e. the labels, textboxes, buttons and datagrid)?

A brief section of my code is shown in the code snippet below:

How would I get the text value of pnTextBox on a particular tab?  How would I catch an event raised from a textchanged or button click even from contols on a particular tab?
Do I need to dynamically create event handler methods too?

Thanks for the help.
private void GeneratePartTabs(Int32 rmaID)

{

    RMA2MainPartList.Load(rmaID);
 

    foreach (RMA2MainPart mainPart in RMA2MainPartList.List)

    {

        TabPage tabPage = new TabPage(mainPart.PartNumber);

        tabPage = CreateTabForm(tabPage, mainPart);

        tabControl1.TabPages.Add(tabPage);

    }

}
 

private TabPage CreateTabForm(TabPage Tab, RMA2MainPart MainPart)

{

    int num = tabControl1.TabCount;

                                                     

    Label pnLabel = new Label();                    

    pnLabel.Name = "lbPartNumber" + num;     

    pnLabel.Text = "Part Number";                   

    pnLabel.Location = new Point(8, 6);          

    pnLabel.Size = new Size(75, 13);             
 

    TextBox pnTextBox = new TextBox();

    pnTextBox.Name = "tbPartNum" + num;

    pnTextBox.Location = new Point(8, 22);

    pnTextBox.Size = new Size(130, 20);

    pnTextBox.Text = MainPart.PartNumber;
 

    //Etc. etc. - multiple labels and textboxes added here.........
 

    Tab.Controls.Add(pnLabel);

    Tab.Controls.Add(pnTextBox);
 

    return Tab;

}

Open in new window

0
Comment
Question by:P1ST0LPETE
1 Comment
 
LVL 13

Accepted Solution

by:
drypz earned 500 total points
Comment Utility
Hi! You may access controls like this

            foreach (Control ctrl in tabControl1.Controls)
            {
                if (ctrl is TextBox)
                {
                    MessageBox.Show(((TextBox)ctrl).Name);
                    //your code here
                }

                if (ctrl is Label)
                {
                    MessageBox.Show(((Label)ctrl).Name);
                    //your code here
                }
            }

You may also dynamically add an event of your control, something like

            int num = tabControl1.TabCount;

            TextBox pnTextBox = new TextBox();
            pnTextBox.Name = "tbPartNum" + num;
            pnTextBox.Location = new Point(8, 22);
            pnTextBox.Size = new Size(130, 20);
            pnTextBox.Text = MainPart.PartNumber;
            pnTextBox.TextChanged += new EventHandler(pnTextBox_TextChanged);

        private void pnTextBox_TextChanged(object sender, EventArgs e)
        {
            throw new Exception("The method or operation is not implemented.");
        }
0

Featured Post

Do You Know the 4 Main Threat Actor Types?

Do you know the main threat actor types? Most attackers fall into one of four categories, each with their own favored tactics, techniques, and procedures.

Join & Write a Comment

This document covers how to connect to SQL Server and browse its contents.  It is meant for those new to Visual Studio and/or working with Microsoft SQL Server.  It is not a guide to building SQL Server database connections in your code.  This is mo…
Entering time in Microsoft Access can be difficult. An input mask often bothers users more than helping them and won't catch all typing errors. This article shows how to create a textbox for 24-hour time input with full validation politely catching …
This is Part 3 in a 3-part series on Experts Exchange to discuss error handling in VBA code written for Excel. Part 1 of this series discussed basic error handling code using VBA. http://www.experts-exchange.com/videos/1478/Excel-Error-Handlin…
This video gives you a great overview about bandwidth monitoring with SNMP and WMI with our network monitoring solution PRTG Network Monitor (https://www.paessler.com/prtg). If you're looking for how to monitor bandwidth using netflow or packet s…

762 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now