Solved

Accessing dynamically created controls on windows form

Posted on 2009-07-09
1
603 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
ID: 24819897
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

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

What my article will show is if you ever had to do processing to a listbox without being able to just select all the items in it. My software Visual Studio 2008 crystal report v11 My issue was I wanted to add crystal report to a form and show…
This article describes relatively difficult and non-obvious issues that are likely to arise when creating COM class in Visual Studio and deploying it by professional MSI-authoring tools. It is assumed that the reader is already familiar with the cla…
This Micro Tutorial hows how you can integrate  Mac OSX to a Windows Active Directory Domain. Apple has made it easy to allow users to bind their macs to a windows domain with relative ease. The following video show how to bind OSX Mavericks to …
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…

867 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

20 Experts available now in Live!

Get 1:1 Help Now