gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 22:06:45 25 4
gpt4 key购买 nike

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


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

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;
}

无效代码导致语法错误:

The event 'System.Windows.Forms.MouseEnter' can only appear on the left hand side of a += or -=

在这个例子中,我希望在鼠标进入面板中的任何控件时触发面板的 MouseEnter 事件。

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

我试过的代码无法编译。

相关问题

最佳答案

改变:

ctrl.MouseEnter += panel.MouseEnter;

ctrl.MouseEnter += panel_MouseEnter;

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

我认为您还需要传递 EventHandler:

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

然后从您的代码中:

FixPanelMouseEnter(pnlActionCenter, pnlActionCenter_MouseEnter);

但同样,pnlActionCenter_MouseEnter 必须已经存在。有道理吗?

关于c# - Winforms:如何将事件处理程序附加到其他控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8173583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com