Windows Forms C#:从UserControl访问TabControl

时间:2018-10-31 07:30:47

标签: c# windows-forms-designer

我有一个TabControl和一个UserControl通过以下方式进行交互: 每次打开新标签页时,UserControl都会加载到新标签页上。

在UserControl中有一个面板,一个TexBox和一个按钮。每次在TexBox中输入文本并按下Button时,都应该更新当前标签的标题

如何从UserControl中访问标签标题?

1 个答案:

答案 0 :(得分:1)

更好的是,用户控件不知道其嵌入位置。

请考虑在用户控件中提供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));