V tlačidlových udalostiach je zahrnutý MouseDoubleClickkeď ho bežne pridávam do formulára, ale keď programovo pridávam tlačidlá do formulára, MouseDoubleClick v udalostiach návrhov IDE neexistuje, aj keď sám napíšem, program sa vykoná bez chyby, ale na udalosti MouseDoubleClick nič neurobí
tu je môj kód:
Dim pb As New Button
pb.Text = "Hello"
pb.Size = New Size(150, 110)
frmAddImage.flPanel.Controls.Add(pb)
AddHandler pb.MouseDoubleClick, AddressOf pbButton_MouseDoubleClick
Private Sub pbButton_MouseDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
"Do something
End Sub
odpovede:
3 pre odpoveď č. 1Čo to sa scvrkáva je nasledovné: Tlačidlá normálne nepoužívajú udalosť dvojitého kliknutia. Trieda gombíkov však dedí z Control
ktorá poskytuje udalosť dvojitého kliknutia. Takže je to tam, ale trieda to nevyhodí.
Môžete použiť .Clicks
majetok spoločnosti MouseEventArgs
premenná v MouseDown
udalosť však:
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
Dim pb As New Button
pb.Text = "Hello"
pb.Size = New Size(150, 110)
frmAddImage.flPanel.Controls.Add(pb)
AddHandler pb.MouseDown, AddressOf pbButton_MouseDown
End Sub
Private Sub pbButton_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
If e.Clicks = 2 Then
MessageBox.Show("The button was double-clicked.")
End If
End Sub
A riešením je povoliť pre tlačidlo StandardClick a StandardDoubleClick ControlStyles. Musíte si vytvoriť vlastnú triedu tlačidiel a v konstruktore nastaviť príznaky na true. Potom môžete zvládnuť DoubleClick
(NOT MouseDoubleClick
) udalosť.
Public Class MyButton
Inherits Button
Public Sub New()
MyBase.New()
SetStyle(ControlStyles.StandardDoubleClick, True)
SetStyle(ControlStyles.StandardClick, True)
End Sub
End Class
Zapojte udalosť do svojej druhej triedy ako predtým, stačí vytvoriť a MyButton
a nie a Button
.
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
Dim pb As New MyButton
pb.Text = "Hello"
pb.Size = New Size(150, 110)
Me.Controls.Add(pb)
AddHandler pb.DoubleClick, AddressOf pbButton_DoubleClick
End Sub
Private Sub pbButton_DoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
MessageBox.Show("The button was double-clicked.")
End Sub