首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对C#中的每个项目按钮应用相同的事件

对C#中的每个项目按钮应用相同的事件
EN

Stack Overflow用户
提问于 2018-09-20 17:17:28
回答 2查看 218关注 0票数 0

我有一个有3个表单和10个用户控件的项目。每个组件都有大约10个按钮。当用户悬停时,我想使用事件来应用样式。是否有一种方法可以为通用组件创建此事件,然后将其自动应用于每个组件?因为我不一定有心情手动处理130个按钮事件^^

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-20 17:28:17

最好的选择可能是子类按钮类,并在其余代码中使用该类。通过所有表单和用户定义的控件来识别事件处理程序并将其添加到每个按钮中,这将付出很大的代价(无论是在开发人员时间还是在运行时间方面)。由于按钮类不是密封的,所以可以轻松地重写OnMouseHover()方法,以便根据需要更新按钮(确保在离开覆盖之前调用基类方法)。

票数 2
EN

Stack Overflow用户

发布于 2018-09-20 20:28:40

您可以使用递归方法并在窗体上调用它。它将通过您的窗体的所有子控件,以及它们的子控件,如果它们是一个按钮,它将将它们链接到您的集中式方法。

下面是一个Click事件的例子,但是它可以应用于任何事情:

代码语言:javascript
复制
    private void RecursiveClickSubscribe(Control c)
    {
        if (c is Button)
        {
            c.Click += GenericClickHandler;
        }
        foreach (Control child in c.Controls)
        {
            RecursiveClickSubscribe(child);
        }

    }

    private void GenericClickHandler(object sender, EventArgs e)
    {
        // stuff you want to do on every click
    }

    Form myForm; // one of your three forms.
    RecursiveClickSubscribe(MyForm);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52430209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档