设置用户控件';s默认事件

本文关键字:默认 事件 用户 控件 设置 | 更新日期: 2023-09-27 18:00:17

我有一个包含一堆控件的User Control。我想将此User Control的默认事件设置为我的一个按钮的Click事件。

我知道要将默认事件设置为UserControl的一个事件,我应该添加属性:

[DefaultEvent("Click")]
public partial class ucPersonSearch : UserControl
...

我想知道是否有可能做这样的事情:

[DefaultEvent("btn1_Click")]
public partial class ucPersonSearch : UserControl
...

我想在btn1被clikced时,在托管此用户控件的表单中激发一些方法。

这真的是我项目中的一个编织物,你们的答案将是有价值的。

设置用户控件';s默认事件

您不能将类成员的事件公开到类的外部。其他人如何在您的UserControl中订阅ButtonClick事件?你试过了吗?除非你让按钮可以从外面访问,否则这是不可能的,这是不好的(每个人都可以更改所有属性)。

你必须定义一个新事件,并在你想要的事件(点击按钮)发生时激发你的新事件:

[DefaultEvent("MyClick")]
public partial class UCPersonSearch : UserControl
{
    Button btnSearch;
    public event EventHandler MyClick;
    public UCPersonSearch()
    {
        btnSearch = new Button();
        //...
        btnSearch.Click += new EventHandler(btnSearch_Click);
    }
    void btnSearch_Click(object sender, EventArgs e)
    {
        OnMyClick();
    }
    protected virtual void OnMyClick()
    {
        var h = MyClick;
        if (h != null)
            h(this, EventArgs.Empty);
    }
}