c# - Windows 窗体 C#:从 UserControl 访问 TabControl
问题描述
我有一个 TabControl 和一个 UserControl 以下列方式交互:每次打开一个新选项卡时,UserControl 都会加载到新选项卡上。
在 UserControl 中有一个面板、一个 TexBox 和一个按钮。每次在 TexBox 中输入文本并按下按钮时,它都应该更新当前选项卡的标题
如何从 UserControl 中访问选项卡标题?
解决方案
如果用户控件不知道它嵌入的位置,那就更好了。
请考虑在用户控件中提供一个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);
}
}
而消费者类的必要代码可以是这样的sg:
// 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));
推荐阅读
- tensorflow - 为什么 Huggingface create_optimizer 方法不起作用?
- python - Selenium:等到元素中不存在文本
- reactjs - 在反应中映射项目列表并分别编辑每个项目
- matlab - 在matlab中找到biginteger的模幂
- python - 存储过程输出参数不变
- python-3.x - 无法分配“''”:“IncomeExpense.username”必须是“用户”实例
- javascript - PDFKIT 溢出数据转到每一行的新页面
- javascript - 使用 JQuery 的嵌套可排序功能
- python - 运行 python 脚本的 Firebase Cloud Functions - 需要依赖项
- bash - 需要关于 shell 中的变量替换的帮助