user9719238713
user9719238713

Reputation: 69

Access controls in created TabPage from separate function C# WinForms

I have the following code in my WinForms C# app:

        private void button2_Click(object sender, EventArgs e)
        {
            var txtbox2 = new System.Windows.Forms.RichTextBox();
            TabPage createdtabpage = new TabPage("I am a tab");
            tabControl1.TabPages.Add(createdtabpage);
            createdtabpage.Controls.Add(txtbox2);
        }

And I want to access the text of txtbox2 when a separate button is clicked. I have this code:

        private void button1_Click(object sender, EventArgs e)
        {
           //Either this:
           string text = txtbox2.Text;
           //or maybe this:
           string text = createdtabpage.Controls[txtbox2]
        }

However, this code doesn't work because the variables are not accessible to outside functions.
Does anybody have a good way to access these TabPage controls from an outside function?

Thanks for any help

Upvotes: 1

Views: 86

Answers (1)

persian-theme
persian-theme

Reputation: 6638

From the control tab, the tab is selected and then the desired control is found by name.

use this code

private void button1_Click(object sender, EventArgs e)
{           
     var textBox = (RichTextBox)tabControl1.SelectedTab.Controls["txtbox2"];
     MessageBox.Show(textbox.Text);
}

Without a name, you have to navigate through all the controls, and for example, if you have multiple richTextBox controls, know the order in which they are located.

foreach (Control control in tabControl1.SelectedTab.Controls)
{
    if(control is RichTextBox)
    {
        MessageBox.Show(control.Text);
    }
}

Upvotes: 1

Related Questions