Windows Forms C #: доступ к TabControl из UserControl - PullRequest
0 голосов
/ 31 октября 2018

У меня есть TabControl и UserControl, взаимодействующие следующим образом: Каждый раз, когда открывается новая вкладка, UserControl загружается на новую вкладку.

В UserControl есть панель, TexBox и кнопка. Каждый раз, когда текст вводится в TexBox и нажимается кнопка, он должен обновлять заголовок текущей вкладки

Как получить доступ к заголовку вкладки из UserControl?

1 Ответ

0 голосов
/ 31 октября 2018

Лучше, если пользовательский элемент управления не знает, куда он встроен.

Рассмотрите возможность предоставления события TitleChanged в пользовательском элементе управления. Тогда потребитель может самостоятельно обновлять себя.

public class MyUserControl : UserControl
{
    // [...]

    public string Title { get; private set; }
    public event EventHandler TitleChanged;

    // [...]

    private void MyTextBox_TextChanged(object sender, EventArgs e)
    {
        Title = MyTextBox.Text;
        TitleChanged?.Invoke(this, EventArgs.Empty);
    }
}

И необходимый код класса потребителя можно записать так:

// after subscribing the myUserControl.TitleChanged event:
private void MyUserControl_TitleChanged(object sender, EventArgs e)
{
    myTab.Text = myUserControl.Title;
}

Еще лучше, если вы используете привязку данных в пользовательской форме:

myTab.DataBindings.Add(nameof(TabPage.Text), myUserControl, nameof(MyUserControl.Title));
...