Handles (VB.NET)

Iniciado por abreu20011, 26 Agosto 2011, 00:58 AM

0 Miembros y 1 Visitante están viendo este tema.

abreu20011

Saludos :)

Estoy trabajando con el IDE SharpDevelop (con framework 3.5) y no sé si hay algo que hago mal (seguramente) o es que este IDE no vale para nada :S

Cuando declaramos un evento en Visual Studio, tenemos el "Handles" para poder decidir si el evento es por click, dobleclick, etc... Simplemente pongo:

Sub Label1Click(sender As Object, e As EventArgs) Handles Label1.Click
Msgbox("Hola")
End Sub


Y al pulsar sobre el botón, saltará el MsgBox. Pero si hago exactamente lo mismo en SharpDevelop me dice que "Handles" requiere de una clausula "WithEvents" :S

¿Alguien me podría ayudar? Necesito usar ese handles porque quiero que esto funcione por doble click y no por uno :S

Gracias :)

Keyen Night

No entendí cuál es el problema. Usa Handles XXX.DoubleClick.
La Fé Mueve Montañas...
                                    ...De Dinero

La programación es más que un trabajo es más que un hobby es una pasión...

abreu20011

#2
Cita de: Keyen Night en 26 Agosto 2011, 19:56 PM
No entendí cuál es el problema. Usa Handles XXX.DoubleClick.

No puedo :S Por eso lo digo, en este IDE me dice que necesito el WithEvents, y auque se lo hice (no se si bien):

WithEvents x As System.Windows.Forms.Label

ya que label1 no lo reconoce...

Sigue sin ir. Si le hago eso ultimo, depura y arranca, pero le da igual DoubleClick que Click que hola xD Y sin el WithEvents directamente ni depura :(

Gracias :)

abreu20011

Encontré la solución!!! XD
La explico por si alguien más le ocurre:

El IDE SharpDevelop no tiene la barra de eventos de VisualStudio, por lo que cambiar de evento (Click, DobleClick, MouseMove, etc...) no se pueden hacer así como así :S

Primero hay que ir al Designer del formulario en cuestión (en este ejemplo el MainForm) y ahí buscar la declaración del objeto (en este ejemplo un Label)

Me.label1.Location = New System.Drawing.Point(12, 9)
Me.label1.Name = "label1"
Me.label1.Size = New System.Drawing.Size(100, 23)
Me.label1.TabIndex = 0
Me.label1.Text = "label1"


Eso es lo que creara el Designer al crear un Label manualmente. Si pulsamos sobre él (para crear eventos) nos añadirá la siguiente linea:

AddHandler Me.label1.Click, AddressOf Me.Label1Click

Tan sólo tenemos que cambiarlo asi:

AddHandler Me.label1.DoubleClick, AddressOf Me.Label1Click

No he logrado que funcione con cosas como botón derecho o izquierdo, pero es un avance :D

Dentro del propio VisualStudio te recomiendan no cambiar esto manualmente, pero lo cierto es que sino no sé como hacerlo (en SharpDevelop) y por otra parte, parece ir bien. No sé si es una la solución correcta, pero funciona :)

Un saludo a todos

Keyen Night

Si es la solución correcta y con respecto a lo de segundo y primer click, el segundo parámetro del sub del evento MouseClick "e" lo puedes invocar como System.Windows.Forms.MouseEventArgs y de allí puedes obtener esa información.
La Fé Mueve Montañas...
                                    ...De Dinero

La programación es más que un trabajo es más que un hobby es una pasión...