Vb.net 窗体上的所有控件单击事件

Vb.net 窗体上的所有控件单击事件,vb.net,click,controls,Vb.net,Click,Controls,当窗体中的任何控件被单击时,如datagirdview、panel、menustrip、button、textbox、label等,是否有一种简单的方法来激活窗体 碰巧我的项目可以显示许多不同的表单,当一个表单位于活动表单的背面时,我很难激活它。我需要单击表单的边框来激活它。您的问题一点也不清楚,我不知道您试图归档什么,但是要执行带有单击事件的内容,您必须为每个控件添加处理程序 如果您不是以口头方式声明,那么: Private Sub ControlsClick(sender As Object

当窗体中的任何控件被单击时,如datagirdview、panel、menustrip、button、textbox、label等,是否有一种简单的方法来激活窗体


碰巧我的项目可以显示许多不同的表单,当一个表单位于活动表单的背面时,我很难激活它。我需要单击表单的边框来激活它。

您的问题一点也不清楚,我不知道您试图归档什么,但是要执行带有单击事件的内容,您必须为每个控件添加处理程序

如果您不是以口头方式声明,那么:

Private Sub ControlsClick(sender As Object, e As EventArgs) _
Handles Panel1.Click, Button1.Click, TextBox2.Click ' etc.
    Me.Activate 'Or Whatever
End Sub
必须为每个控件添加处理程序。如果你以友好的方式这样做,也是一样的:

Private Sub InitializeClickHandlers(sender As Control, Optional bChilds As Boolean = True)
    For Each elem As Control In sender.Controls
        AddHandler elem.Click, AddressOf ControlsClick(elem, New EventArgs)

        If bChilds AndAlso elem.Controls.Count > 0 Then
            Call InitializeClickHandlers(sender)
        End If
    Next
End Sub
然后,对于表单中的每个控件,您可以这样调用它:
callinitializeclickhandlers(Me)


或者,对于面板中的每个控件:
调用InitializeClickHandler(Panel1)

最有可能出现问题,因为您的窗体是MDI子窗体。。您必须单击菜单栏才能激活表单。。但是,如果您有一个无边界表单,单击控件将不会激活该表单。。同样,这通常发生在MDI上,但不应该发生在常规winform上。。除非您在后台有其他正在运行的事件干扰流程。

您能告诉我们吗?但是表单已经是这样工作的,只要选中它,如果您单击任何表单的按钮,它就会激活表单。也许我误解了什么,也许你应该澄清一下。然而,您似乎应该做一些不同的事情,这听起来像是一个非常糟糕的GUI。例如,也许你应该在一个表单中使用多个选项卡,而不是多个表单。你所描述的是我已经得到的行为。你确定你还没有运行一些正在改变这种行为的代码吗?我已经尝试在窗体中放置一个面板,然后当单击该面板时,我有一个代码me.activate,但问题是当单击面板上的另一个控件时,我的代码不起作用。如果用户单击窗体上的任何内容,我想做什么表单将被激活。请检查是否存在阻止您描述的正常行为的代码-例如:WndProc方法中是否存在任何可疑代码?