使用事件处理程序与覆盖事件触发方法

2024-05-06

我正在创建 Button 的子类,并希望向其某些事件(例如 OnClick)添加自定义功能。哪种方式更理想?我是否重写 OnClick:

protected override void OnClick(EventArgs e)
{
    base.OnClick(e);
    doStuff();
}

或者我应该通过设计器将 OnClick 事件链接到 Button 子类中定义的事件处理程序?

class ButtonSubclass
{
    public ButtonSubclass() : base()
    {
        InitializeComponent();
    }

    private void InitializeComponent()
    {
        this.Click += new System.EventHandler(this.ButtonSubclass_Click);
    }
}

Edit:我添加了一些小的视觉更改(可能会作为基本的皮肤),但大多数更改都在事件处理程序中,我不想在每个重用它的表单上重新实现(复制粘贴)。


如果您真正专业化该按钮,则覆盖是有意义的OnClick。如果你只是actually改变单击按钮时发生的情况,我不会子类化Button首先 - 我会just添加事件处理程序。

编辑:只是为了提供更多的想法 - 如果您想为多个按钮添加类似的事件处理程序,很容易编写一个实用程序方法来执行此操作,并从多个位置调用它。它不需要实际的子类化。这并不是说子类is当然,在你的情况下肯定是错误的 - 只是给你额外的选择:)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用事件处理程序与覆盖事件触发方法 的相关文章

随机推荐