我正在尝试将鼠标控件的事件传递给其父控件。我有我的控制,其中有一个面板,然后是面板上的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
我似乎无法找到将鼠标事件传递给父控件的任何可用示例。我感谢任何帮助。
答案 0 :(得分:0)
在评论的帮助下,我想出了一种方法。为我的主窗体上的所有子控件创建的添加处理程序甚至没有触及UserControl:
AddHandler rptr.lblRecName.MouseUp, AddressOf Child_MouseUp
AddHandler rptr.lblNote.MouseUp, AddressOf Child_MouseUp
AddHandler rptr.strRating.MouseUp, AddressOf Child_MouseUp
当我在我的主窗体上单击我的面板时,在另一个子窗格中,我设置了父控件,即Repeater UserControl,backcolor为黑色,看起来像一个选择,并使用基于控件lblRecName的东西填充数据网格。文本。
Private Sub Child_MouseUp(ByVal sender As System.Object, ByVal e As MouseEventArgs)
Dim ctl As Control = sender
flpControl_Click(ctl.Parent, e)
End Sub
TBH,这似乎是处理这个问题的一种黑客方式,但它确实有效。谢谢你们!