如何将相同的事件处理程序附加到 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/