Double_Click event werkt niet

Status
Niet open voor verdere reacties.

bitchkoemer

Gebruiker
Lid geworden
3 aug 2006
Berichten
39
Hallo VB.Netters

Ik heb een formulier frm_StartFormulier met daarop Button1, Button2 en Textbox1

met bijhorende code:

Code:
Public Class frm_StartFormulier
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        TextBox1.Text = "Click"
    End Sub

    Private Sub Button2_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.DoubleClick
        TextBox1.Text = "DoubleClick"
    End Sub
End Class

Als ik op Button1 enkel klik komt netjes Click in de tekstbox, bij dubbelklikken op Button2 gebeurd er echter niets...........:(

Iemand enig idee............

Alvast bedankt voor het meedenken

Michel
 
U hebt idd gelijk ... dat werkt niet (iemand mss emailen naar microsoft??).
Nu ik heb iets gemaakt dat dat wel mogelijk maakt, in die zin ... het is niet
perfect, maar het werkt wel!
Er zijn een paar dingen nodig (het is geen mooie oplossing, maar ja ...):

1. Een nieuwe klasse:
Code:
<System.ComponentModel.DefaultEvent("DblClick")> Public Class ButtonExt
    Inherits Button
    Public Event DblClick As EventHandler
    Public Shadows Event Click As EventHandler
    Private InternalCounter As Integer = 2
    Private dblHandled As Boolean
    Private WithEvents tmr As New Timer

    Public Sub New()
    End Sub

    Protected Overrides Sub onClick(ByVal e As EventArgs)
        Controle()
    End Sub

    Protected Overridable Sub OnDblClick(ByVal e As EventArgs)
        RaiseEvent DblClick(Me, e)
        dblHandled = False
    End Sub

    Private Function Controle() As Boolean
        InternalCounter -= 1
        [COLOR="Red"]tmr.Interval = 100[/COLOR]        'Dit is de maximale delay tussen 2 clicks om een dblclick te laten uitvoeren (het staat ongeveer goed)
        tmr.Start()
        If InternalCounter = 0 Then
            dblHandled = True
            OnDblClick(New EventArgs())
            InternalCounter = 2
            Return True
            tmr.Stop()
        End If
    End Function

    Private Sub tmr_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles tmr.Tick
        Static i As Integer
        Select Case i
            Case 0
                i = 1
            Case 1
                i = 0
                InternalCounter = 2
                tmr.Stop()
                If Not dblHandled Then
                    RaiseEvent Click(Me, e)
                End If
        End Select
    End Sub
End Class

2. Op uw form moet er dan een nieuwe button komen, dat doe je door de control (zie screenshot onderaan) op uw form te slepen (werkt verder als een gewone button)

3. In uw code van uw form zet je de volgende methode (nuja ... u know how this works):
Code:
 Private Sub ButtonExt1_DblClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles ButtonExt1.DblClick
        MessageBox.Show("DoubleClick")
    End Sub

En zo maak je voor een stom probleem een uur code ;)
Hopelijk heb je hier iets aan ...


Grtz!

P.S. Indien je gewone Click-Event nog zou willen gebruiken bij de extended button zal je een delay van 200ms merken!
 

Bijlagen

  • scs.JPG
    scs.JPG
    16,7 KB · Weergaven: 54
Laatst bewerkt:
U hebt idd gelijk ... dat werkt niet (iemand mss emailen naar microsoft??).

Tijdens mijn zoektocht in de bijgeleverde helpfiles bots ik op onderstaande regel:

"If the user attempts to double-click the Button control, each click will be processed separately; that is, the control does not support the double-click event"

Begrijpen wie begrijpen kan, toch staat "Double_Click" in het lijstje bij de "Button" events.

Bill Gates Strikes Again....;)

Groetjes,

Michel
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan