2011-11-17 34 views
2

我有一個Panel其中包含子控件的任意數量:WinForms:如何在鼠標進入控件時使MouseEnter觸發?

enter image description here

如果鼠標進入在Panel子控件之一:

enter image description here

然後MouseEnter事件Panel沒有被解僱。

注:一個相關的問題是,如果從該面板鼠標移動到孩子的人控制,那麼小組的MouseLeave事件被觸發:

enter image description here

即使鼠標沒有離開面板。

我怎麼能引起PanelMouseEnter事件,如果鼠標進入「任何」控制即面板上的孩子火?

+1

WPF使得這個更容易起泡事件,但在的WinForms,你堅持寫管道代碼。 – Davy8

+1

我想知道是什麼讓人們堅持WinForms。過去4年半來我一直使用WPF,從那以後再也沒有碰過WinForms。 WPF很迷人。 Winforms糟透了。 – Shimmy

+0

@Shimmy在WPF中無法[在dlus中佈局表單](http://stackoverflow.com/questions/7147716/how-to-specify-units-in-dialog-units-in-wpf),無法[to指定對話框單位](http://stackoverflow.com/questions/395195/wpf-how-to-specify-units-in-dialog-units),要求表單使用XML標記語言佈局,並且你不能使用數據綁定。 –

回答

4

喜歡的東西:

foreach (Control ctrl in panel1.Controls) 
      ctrl.MouseEnter += panel1_MouseEnter; 
+0

也許你可以回答如何擁有泛型代碼(http://stackoverflow.com/questions/8173583/winforms-how-to-attach-event-handler-to-other-controls)短版本:'control.MouseEnter + = panel.MouseEnter'不能編譯。 –

+0

當我有幾十個面板時,它會變得毛茸茸的,我不知道附加到每個事件的方法的*名稱*。你會認爲一臺電腦能夠告訴你這樣的事情 - 而不是必須維持這麼大的一團泥漿。 –

+0

我寫了「panel1_MouseEnter」 - 意思是Visual Studio爲你寫的默認事件處理程序。不是「control.MouseEnter + = panel.MouseEnter」 - 它同意不會編譯。 –

相關問題