【发布时间】:2010-10-30 21:36:20
【问题描述】:
嗨。我有一个包含文本框的 UserControl。我想访问文本框的 textchanged 事件,但在用户控件的事件属性中,我看不到文本框的事件。如何使用 C# 在 Winforms 中公开公开的 UserControl 公开和处理子控件的特定事件。
【问题讨论】:
标签: c# winforms user-controls childcontrol
嗨。我有一个包含文本框的 UserControl。我想访问文本框的 textchanged 事件,但在用户控件的事件属性中,我看不到文本框的事件。如何使用 C# 在 Winforms 中公开公开的 UserControl 公开和处理子控件的特定事件。
【问题讨论】:
标签: c# winforms user-controls childcontrol
如果愿意,您可以显示新事件并将任何订阅直接传递给控件:
public class UserControl1 : UserControl
{
// private Button saveButton;
public event EventHandler SaveButtonClick
{
add { saveButton.Click += value; }
remove { saveButton.Click -= value; }
}
}
【讨论】:
sender 参数将是 Button,而不是 UserControl... 这使得无法在多个处理程序中使用相同的处理程序控件的实例
将整个 TextBox 公开为用户控件中的公共属性,并以您希望的方式订阅它的事件。
示例:
class myUserControl: UserControl {
private TextBox _myText;
public TextBox MyText { get {return _myText; } }
}
完成此操作后,您可以像这样订阅它的任何事件:
theUserControl.MyText.WhatEverEvent += ...
希望这会有所帮助!
【讨论】: