Visual Basic.NET - No se como saber evento lanzado

 
Vista:
sin imagen de perfil
Val: 12
Ha aumentado su posición en 6 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

No se como saber evento lanzado

Publicado por carlos (36 intervenciones) el 10/03/2019 20:37:25
Hola.

Tengo un código tal que así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private Sub DataGridView(sender As Object, e As DataGridViewCellMouseEventArgs) Handles DataGridView.CellMouseClick, DataGridView.CellMouseDoubleClick
 
'Aquí me gustaría poder saber cuál de los 2 eventos se ha lanzado, alguna forma que pudiera separarlo, algo así:
 
if evento_lanzado = CellMouseClick then
 
         msgbox "hemos hecho un simple click sobre una celda"
 
elseif evento_lanzado = cellMouseDoubleClick then
 
        msgbox "hemos hecho soble-click sobre una celda"
 
end if
 
 
end sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

No se como saber evento lanzado

Publicado por Nacho (56 intervenciones) el 10/03/2019 21:14:12
En e está eso.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 12
Ha aumentado su posición en 6 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

No se como saber evento lanzado

Publicado por Carlos (36 intervenciones) el 10/03/2019 22:02:07
Ah ok
Aunque he hecho esto y no parece funcionar:
1
2
3
4
5
If e.clicks = 1 then
  Msgbox “has hecho click”
Elseif e.clicks =2 then
   Msgbox “has hecho doble-click”
End if

Pero no va bien, si alguien tiene alguna otra forma se lo agradezco
Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

No se como saber evento lanzado

Publicado por Nacho (56 intervenciones) el 10/03/2019 22:28:47
Eso que has puesto funciona perfectamente pero no has tenido en cuenta el modo de funcionamiento del Windows. Cuando das un doble click das un clikc y luego otro. El windows considera que es un doble click si el tiempo que pasa entre uno y otro es más corto que un valor configurable. O sea, siempre te va a llamar el evento de un click y si das otro lo suficientemente rápido te llama también el evento del doble click con e.Click=2. Y como siempre va a llamar el del click, en ese momento lanza un MessageBox modal, con lo que el DataGridView pierde el capture y no recibe nunca el segundo click.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 12
Ha aumentado su posición en 6 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

No se como saber evento lanzado

Publicado por Carlos (36 intervenciones) el 10/03/2019 22:40:00
Ah entiendo, por eso siempre entra en la primera opcion.
¿Y entonces alguien que me diga la instucciòn exacta que debo poner para saber si da un click o doble-click?

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de gilman
Val: 224
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

No se como saber evento lanzado

Publicado por gilman (81 intervenciones) el 11/03/2019 08:28:56
Para mi lo mas sencillo es que uses dos eventos, uno pra el click y otro para el dobleclick y desde esos eventos llamas a un procedimiento al que le indicas que evento ha ocurrido.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 12
Ha aumentado su posición en 6 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

No se como saber evento lanzado

Publicado por Carlos (36 intervenciones) el 11/03/2019 09:32:47
Muy buena idea.
Aunque me hubiera gustado poder hacer un unico procedimiento con los 2 eventos y dentro poder diferenciar si ocurriò click o doble-click para unificar y no crear tanto còdigo y eventos que ensucian un pelin el codigo. Pero bueno, si no hay forma es buena idea. Muchas gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

No se como saber evento lanzado

Publicado por Phil Rob (1554 intervenciones) el 11/03/2019 09:58:23
Hola,

Los DoubleClick (o MouseDoubleClick) no todos bien funcionan, es mejor de utilizar el Click (o MouseClick) y calcular el tiempo entre dos Click.
Los codigos siguiente estan escribir para una herramienta visual ficticia que puebe ser un Button, un TextBox, un DataGridView, .... Un procedimiento TratarClick() hace el trabajo necessario.
Un primer evento Click lanze un Timer y si un segund evneto Click arribe ante el evento Tick del Timer, entonces es un DoubleClick, si no, es un Click.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Dim WithEvents TimerCuantaClick As New Timer   ' Declaración a nivel de formulario
    Dim CuantaClick As Integer = 0
 
    Private Sub UnaHerramientaVisual_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles UnaHerramientaVisual.MouseClick
        If CuantaClick = 0 Then
            TimerCuantaClick.Interval = 200 ' Milliseconds, tiempo entre dos Click en DoubleClick : tiene que ajustar
            TimerCuantaClick.Start()
            CuantaClick = 1
        Else
            TimerCuantaClick.Stop()
            TratarClick(2)
            CuantaClick = 0
        End If
    End Sub
 
    Private Sub TimerCuantaClick_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles TimerCuantaClick.Tick
        TimerCuantaClick.Stop()
        CuantaClick = 0
        TratarClick(1)
    End Sub
 
    Private Sub TratarClick(ByVal NumeroClick As Integer)
        Select Case NumeroClick
            Case 1
                MessageBox.Show("Click")
            Case 2
                MessageBox.Show("DoubleClick")
        End Select
    End Sub

Que tenga un buen dia,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 12
Ha aumentado su posición en 6 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

No se como saber evento lanzado

Publicado por Carlos (36 intervenciones) el 11/03/2019 10:20:31
Si, el evento doble-click alguna vez no ha terminado de funcionar. Miraré esta funciòn, es mas manual pero seguro funciona mejor gracias
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar