【发布时间】:2015-08-04 18:13:22
【问题描述】:
我正在尝试将控件的鼠标向上事件传递到其父控件。我有我的控件,里面有一个面板,然后面板上有 3 个控件。这是在运行时添加到流布局面板的自定义控件。
我可以使用添加处理程序通过主代码访问面板,但每次单击该面板上的某个控件时,我都希望传递鼠标向上事件,以便触发面板事件。
Public Class Repeater
Public Event RepeaterMouseUp As MouseEventHandler
Private Sub on_Mouse_Up(ByVal sender As Object, ByVal e As MouseEventArgs) 'Handles TextBox1.onclick
RaiseEvent RepeaterMouseUp(sender, e)
End Sub
Private Sub Repeater_Load(sender As Object, e As EventArgs) Handles Me.Load
AddHandler lblRecName.MouseUp, AddressOf on_Mouse_Up
AddHandler lblNote.MouseUp, AddressOf on_Mouse_Up
AddHandler strRating.MouseUp, AddressOf on_Mouse_Up
End Sub
Private Sub lblNote_MouseUp(sender As Object, e As MouseEventArgs) Handles lblNote.MouseUp
RaiseEvent RepeaterMouseUp(sender, e)
End Sub
Private Sub Panel1_MouseUp(sender As Object, e As MouseEventArgs) Handles Panel1.MouseUp
RaiseEvent RepeaterMouseUp(sender, e)
End Sub
End Class
我似乎找不到任何将鼠标事件传递给父控件的可用示例。感谢您的帮助。
【问题讨论】:
-
您的自定义控件看起来更像一个用户控件。通常,UC 将处理大多数子控件事件,直到引发自定义事件以供表单使用。如果您需要表单了解控制事件,您需要将它们冒泡 - 在这些事件中,让 UC 引发表单可以订阅的事件。
-
同意。但是,如果您不需要控件中的点击事件,那么您可以使用 Hans Passant 概述的方法make them transparent to clicks。
-
编辑已添加。 Plutonix 你是对的,它是一个用户控件。我总是忘记差异。尽管这两个 cmets 对我找到答案都有帮助。我实际上不需要控制点击事件来做任何事情,除了将点击传递给现在正在工作的父级。感谢您的帮助!
-
请将您的解决方案发布为答案而不是问题更新,以便其他人可以从 Q/A 格式中受益。
标签: vb.net