Vb.net 如何在Visual Basic中编写单击事件?

Vb.net 如何在Visual Basic中编写单击事件?,vb.net,visual-studio-2010,Vb.net,Visual Studio 2010,我创建了一个表单,允许用户通过单击放大图片表单上的任意位置(需要考虑3个对象)关闭表单,然后返回到另一个表单,称为“frmPhone”。表单上有一张真实的图片:“frmPhonePics”,这是我用来完成我试图做的事情(无法在此处插入图像。抱歉)。我想做的是编写一个单击事件来关闭大图片表单,以允许用户在表单中的任何位置完全关闭它,但我不知道如何做到这一点。以下是我目前掌握的代码: Private Sub frmPhonePics_Click(ByVal sender As System.Obje

我创建了一个表单,允许用户通过单击放大图片表单上的任意位置(需要考虑3个对象)关闭表单,然后返回到另一个表单,称为“frmPhone”。表单上有一张真实的图片:“frmPhonePics”,这是我用来完成我试图做的事情(无法在此处插入图像。抱歉)。我想做的是编写一个单击事件来关闭大图片表单,以允许用户在表单中的任何位置完全关闭它,但我不知道如何做到这一点。以下是我目前掌握的代码:

Private Sub frmPhonePics_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Click
    frmPhone.Show()
    Me.Hide()
End Sub

您可以将各种对象的单击处理程序映射到一个对象,如果这是您所要求的:

Private Sub frmPhonePics_Click(ByVal sender As System.Object, _
       ByVal e As System.EventArgs) _
          Handles MyBase.Click, Handles  picLarge.Click, Handles otherThing.Click

   frmPhone.Show()         
   Me.Hide()           ' should be Me.Close?
End Sub

不确定它为什么是MyBase。请单击代码中的,而不是我。单击。这是一个子类表单吗?

听起来好像你的
frmPhonePics
表单上有一张图片。如果您双击它(从VBA编辑器),您应该会看到代码-例如,您可能会看到

Private Sub Image1_Click()

End Sub
现在,您只需在此处添加代码:

Private Sub Image1_Click()
  Me.Hide
  frmPhone.Show()
End Sub

注意-顺序很重要,因为
frmPhone.Show()
将“劫持”代码流,直到它被解除,并且在您的代码中
Me.Hide
将不会执行(因此表单不会关闭),直到
frmPhone
被解除。

我强烈建议使用双击而不是单击。错误的点击做错事的可能性很大

最简单的方法就是从设计师那里得到。编写子程序,然后针对每个控件,在属性窗口中单击事件图标(thunderbolt),并将子程序指定给双击事件

或者,完全取消
Handles
子句,并在Load事件处理程序中使用一系列
Addhandler
语句。如果在控件的名称中放入一个唯一的字符串,或者如果它是所有控件,则可以遍历这些控件,并对所有控件使用一个addhandler语句

For Each c As Control In Me.Controls
    AddHandler c.DoubleClick, AddressOf Ctrl_DoubleClick
Next

Private Sub Ctrl_DoubleClick(sender As Object, e As EventArgs)
    'Do stuff
End Sub

您不需要额外的Handles语句。只需要一个:例如“Handles MyBase.Click,picLarge.Click,otherThing.Click”