Контроль доступа из Usercontrol, который программно добавляется более одного раза? - PullRequest
2 голосов
/ 04 ноября 2011

Ну, я много искал и нигде не могу найти помощь.

У меня есть форма с вкладками. Когда я нажимаю кнопку, добавляется новая вкладка и пользовательский контроль добавляется на новую вкладку.

Я не могу понять, как получить доступ к элементам управления на вторых + вкладках. Я могу получить доступ к пользовательским элементам управления только из первой вкладки ... только не из других.

Вот код, который у меня был до сих пор.

private void button1_Click(object sender, EventArgs e)
{
    string title = "tabPage " + (tabControl1.TabCount + 1).ToString();
    TabPage newPage = new TabPage(title);
    tabControl1.TabPages.Add(newPage);

    UserControl1 newTabControl = new UserControl1();
    newPage.Controls.Add(newTabControl);
}

private void button2_Click(object sender, EventArgs e)
{
    label1.Text = userControl1.textBox1.Text;
}

Итак, когда я нажимаю кнопку 1, скажем 2 или 3 раза, и как мне получить текст из textBox в userControl на этой вкладке?

... может я все об этом ошибаюсь?

1 Ответ

3 голосов
/ 04 ноября 2011

Вам необходимо расширить TabPage и иметь свойства, которые содержат дочерние объекты, например:

public class ExtendedTabPage : TabPage
{
    public UserControl1 UserControl { get; private set; }

    public ExtendedTabPage(UserControl1 userControl)
    {
        UserControl = userControl;
        this.Controls.Add(userControl);
    }
}

Затем вы можете получить к нему доступ через .UserControl, если у вас еще есть ссылка на него.

ExtendedTabPage newTab = new ExtendedTabPage(new UserControl1());
tabControl1.TabPages.Add(newTab);

newTab.UserControl.textBox1.Text = "New Tab User Control TextBox";

Вам также нужно будет перейти в файл конструктора UserControl и изменить объявление текстового поля с частного на публичное.

...