首页 >后端开发 >C++ >如何将事件从用户控件传递到其父窗体?

如何将事件从用户控件传递到其父窗体?

Barbara Streisand
Barbara Streisand原创
2025-01-05 20:35:39555浏览

How Can I Pass Events from a User Control to Its Parent Form?

将事件向上传递到用户控件层次结构

在自定义用户控件中,通常希望使控件中引发的事件可供主控件访问形式。当尝试处理源自子控件的事件(例如数字上下控件中的值更改)时,这一点变得很明显。

创建事件处理程序

要解决此问题挑战,在用户控件中创建一个事件处理程序,当所需事件发生时触发该事件处理程序。此事件处理程序应将事件“冒泡”到表单,使其能够处理该事件。

示例代码

考虑一个带有名为“Button1”的按钮的用户控件":

用户控制:

[Browsable(true)] [Category("Action")] [Description("Invoked when user clicks button")]
public event EventHandler ButtonClick;

protected void Button1_Click(object sender, EventArgs e)
{
    //bubble the event up to the parent
    if (this.ButtonClick!= null)
        this.ButtonClick(this, e);               
}

主要形式:

UserControl1.ButtonClick += new EventHandler(UserControl_ButtonClick);

protected void UserControl_ButtonClick(object sender, EventArgs e)
{
    //handle the event 
}

注释

  • 事件可见性: Browsable 属性公开 Visual Studio 设计器的“事件”中的事件查看。
  • 活动类别: 类别属性指定事件的类别,例如“操作”。
  • 事件描述: 描述属性提供事件的简要描述。
  • 事件处理省略:可以省略上述属性,但设计器可用性增强可用性。
  • 改进的语法:较新的 Visual Studio 版本支持更短的语法:ButtonClick?.Invoke(this, e);而不是 if (this.ButtonClick!= null) this.ButtonClick(this, e);.

以上是如何将事件从用户控件传递到其父窗体?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn