我有我为我的项目创建的自定义控件。在这个控件中有几个子控件,比如一个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. 鼠标事件e(Jpanel)Java帮助
- 2. jQuery的帮助,鼠标事件,事件未解除绑定
- 3. ASP.NET UserControl帮助
- 4. C++鼠标左键按下帮助
- 5. vb.net DevExperess winforms gridview鼠标事件
- 6. C#Winforms自定义控件帮助
- 7. C#MDI事件帮助
- 8. C#WinForms用鼠标拖动控件
- 9. C#Winforms抑制文本框上的鼠标单击事件
- 10. 事件帮助
- 11. C#鼠标PreMove事件?
- 12. C++鼠标悬停事件
- 13. C中的鼠标事件#
- 14. 模拟鼠标事件? C#
- 15. C#Winforms - 更改鼠标光标图标
- 16. Winforms UserControl加载事件未被触发
- 17. 在C#WinForms帮助提示创建
- 18. 简单的网络帮助(C#WinForms)
- 19. C#Winforms帮助文本更改字体
- 20. 鼠标事件
- 21. 在鼠标事件中添加一个基于xaml的usercontrol到另一个鼠标事件
- 22. 需要帮助了解事件在C#
- 23. C#Xamarin Android。 ButtonClick事件帮助需要
- 24. 未触发鼠标事件
- 25. JQueryUI手风琴鼠标悬停帮助
- 26. 鼠标点击脚本帮助
- 27. Php jquery鼠标过度帮助
- 28. 鼠标进入鼠标离开帮助一个大的信息
- 29. WinForms鼠标捕获
- 30. 事件问题C#.NET UserControl