我有一个TabControl和一个UserControl通过以下方式进行交互: 每次打开新标签页时,UserControl都会加载到新标签页上。
在UserControl中有一个面板,一个TexBox和一个按钮。每次在TexBox中输入文本并按下Button时,都应该更新当前标签的标题
如何从UserControl中访问标签标题?
答案 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));