/ / mousedoubleclick nefunguje pre dynamicky vytvorené tlačidlo - vb.net, mouseevent

mousedoubleclick nepracuje pre dynamicky vytvorené tlačidlo - vb.net, mouseevent

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

Vzaté z: http://social.msdn.microsoft.com/Forums/en-US/83ac6fbd-af42-4b9c-897e-142abb0a8199/can-not-use-event-double-click-on-button


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