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

时间:2013-10-31 21:02:57

标签: vb.net visual-studio-2010

我创建了一个表单,允许用户通过单击放大图片表单上的任意位置来关闭表单(需要考虑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

3 个答案:

答案 0 :(得分:0)

如果您要问的话,您可以将各种对象的点击处理程序映射到一件事:

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.Click而不是Me.Click。这是一个子类形式吗?

答案 1 :(得分:0)

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

Private Sub Image1_Click()

End Sub

现在你要做的就是在那里添加你的代码:

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

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

答案 2 :(得分:0)

我强烈建议您使用DoubleClick而不是单击。错误点击错误的可能性非常大。

最简单的方法就是来自设计师。编写子例程,然后对于每个控件,在属性窗口中,单击事件图标(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