我有我爲我的項目創建的自定義控件。在這個控件中有幾個子控件,比如一個Label,一個PictureBox和一個LinkLabel。其他的則是LinkLabel,我希望鼠標懸停在父控件上,並讓鼠標懸停在鼠標上。當您將鼠標懸停在控件上時,背景顏色會發生變化,但在子控件上時背景顏色不會更改;這是因爲子控件上沒有MouseEnter和MouseLeave事件。我通過將父控件委託方法添加到子控件來解決此問題。問題仍然是,當我訂閱了父控件上的click事件時,click事件也會在子控件上被忽略。我可以訂閱每個單獨的子控件,但是如何強制執行父控件的單擊事件?我通過搜索找到的術語是「事件冒泡」,但這似乎只適用於ASP.NET技術和框架。有什麼建議麼?C#WinForms UserControl鼠標事件幫助
3
A
回答
2
您的描述讓我相信您希望您的孩子和您的父母控件都能夠響應對子控件的點擊。
如果我正確理解你的問題,我會建議訂閱你的子控件的單擊事件,並在那些事件處理程序中調用一些常用的方法,以你想要的方式操縱父UserControl的狀態(例如,改變背景顏色)。
1
似乎有人爲我解決了它。一位朋友解釋說C#控件支持一種名爲InvokeOnClick(Control,EventArgs)的方法;
我向每個子控件添加了我的事件委託方法,對於click事件,我爲每個要使用的子控件創建了一個方法。這又會調用InvokeOnClick(this,new EventArgs());
private void Control_Click(object sender, EventArgs e)
{
// this is the parent control.
InvokeOnClick(this, new EventArgs());
}
private void IFLVControl_MouseEnter(object sender, EventArgs e)
{
this.BackColor = Color.DarkGray;
}
private void IFLVControl_MouseLeave(object sender, EventArgs e)
{
this.BackColor = Color.White;
}
0
彼得RILLING了在CodeProject有一些簡單而有效的代碼做的WinForms事件冒泡/廣播(和C#)。它非常易於使用。
1
我也有類似的問題,在所有子控件處理Click事件。代碼是VB.NET,但它應該很容易調整。
Public Shared Sub RelayEvents(ByVal usrcon As Windows.Forms.Control, ByVal del As System.EventHandler, Optional ByVal includeChildren As Boolean = True)
For Each con As Windows.Forms.Control In usrcon.Controls
AddHandler con.Click, del
If includeChildren Then
RelayEvents(con, del)
End If
Next
End Sub
無論何時需要所需的級聯,可將以下行添加到類的構造函數中。
CustomMethods.RelayEvents(Me, New EventHandler(AddressOf Me_Click))
相關問題
- 1. pyQt4 QGraphicsView需要鼠標事件幫助
- 2. 鼠標事件e(Jpanel)Java幫助
- 3. Winforms - UserControl OnGotFocus事件
- 4. jQuery的幫助,鼠標事件,事件未解除綁定
- 5. 鼠標離開控件時Winforms事件
- 6. ASP.NET UserControl幫助
- 7. C++鼠標左鍵按下幫助
- 8. C#Winforms自定義控件幫助
- 9. vb.net DevExperess winforms gridview鼠標事件
- 10. 透明度和鼠標事件WinForms
- 11. C#MDI事件幫助
- 12. C#WinForms用鼠標拖動控件
- 13. C#Winforms抑制文本框上的鼠標單擊事件
- 14. 事件幫助
- 15. Winforms UserControl加載事件未被觸發
- 16. C#鼠標PreMove事件?
- 17. C中的鼠標事件#
- 18. C#按住鼠標事件
- 19. 模擬鼠標事件? C#
- 20. C++鼠標懸停事件
- 21. C#Winforms - 更改鼠標光標圖標
- 22. C#Winforms幫助文本更改字體
- 23. 在C#WinForms幫助提示創建
- 24. 簡單的網絡幫助(C#WinForms)
- 25. 爲輔助鼠標按鈕添加鼠標事件Javafx
- 26. 需要幫助瞭解事件在C#
- 27. C#Xamarin Android。 ButtonClick事件幫助需要
- 28. 在鼠標事件中添加一個基於xaml的usercontrol到另一個鼠標事件
- 29. 鼠標事件
- 30. Xcode鼠標和NSView的基本幫助?