如何将相同的事件处理程序附加到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;
}此无效代码导致语法错误。
事件'System.Windows.Forms.MouseEnter‘只能出现在+=或-=的左侧
在本例中,如果鼠标进入面板中的任何控件,我希望面板的MouseEnter事件触发。
How do i attach the same event handler to additional controls in Winforms/.NET/C#?
我试过的代码没有编译。
相关问题
发布于 2011-11-17 20:13:41
更改:
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必须已经存在。讲得通?
https://stackoverflow.com/questions/8173583
复制相似问题