首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Winforms:如何将事件处理程序附加到其他控件

Winforms:如何将事件处理程序附加到其他控件
EN

Stack Overflow用户
提问于 2011-11-17 20:08:48
回答 3查看 1.8K关注 0票数 1

如何将相同的事件处理程序附加到Winforms/.NET/C#中的其他控件?

随机尝试了完美的逻辑代码来实现我想要的结果,但不幸的是,语法在C#中无效:

代码语言:javascript
运行
复制
public MainForm()
{
   InitializeComponent();

   FixPanelMouseEnter(pnlActionCenter);
   FixPanelMouseEnter(pnlAdministrativeTools);
   FixPanelMouseEnter(pnlAutoPlay);
   FixPanelMouseEnter(pnlBackupAndRestore);
   //...snip 49 lines...
   FixPanelMouseEnter(pnlWFirewall);
   FixPanelMouseEnter(pnlWLiveLanguageSettings);
   FixPanelMouseEnter(pnlWUpdate);
}

private void FixPanelMouseEnter(Panel panel)
{
    foreach (Control ctrl in panel.Controls)
        ctrl.MouseEnter += panel.MouseEnter;
}

此无效代码导致语法错误

事件'System.Windows.Forms.MouseEnter‘只能出现在+=或-=的左侧

在本例中,如果鼠标进入面板中的任何控件,我希望面板的MouseEnter事件触发。

How do i attach the same event handler to additional controls in Winforms/.NET/C#?

我试过的代码没有编译。

相关问题

EN

Stack Overflow用户

发布于 2011-11-17 20:13:41

更改:

代码语言:javascript
运行
复制
ctrl.MouseEnter += panel.MouseEnter;

代码语言:javascript
运行
复制
ctrl.MouseEnter += panel_MouseEnter;

假设void panel_MouseEnter方法已经存在于代码中。

我认为你也需要通过EventHandler:

代码语言:javascript
运行
复制
private void FixPanelMouseEnter(Panel panel, EventHandler enterMethod) {
  foreach (Control ctrl in panel.Controls)
    ctrl.MouseEnter += enterMethod;
}

然后根据你的代码:

代码语言:javascript
运行
复制
FixPanelMouseEnter(pnlActionCenter, pnlActionCenter_MouseEnter);

但同样,pnlActionCenter_MouseEnter必须已经存在。讲得通?

票数 2
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8173583

复制
相关文章

相似问题

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