Hola, que tal, les cuento que recien empiezo con vb, estoy usando v studio 2003 porque es el que usamos en el instituto.
quiero hacer un formulario con un boton en el cual cuando le apuntes con el mouse para clickearlo se mueva hacia arriba hasta cierto punto, pero la idea es que solo se mueva cuando le vas a apuntar o pasar el mouse por encima, para eso use MOUSE MOVE, logré que se mueva hacia arriba hasta ese cierto punto, pero si voy y dejo el mouse posicionado en el punto mas alto al que se mueve el boton, el boton no para de moverse... debo de tener un error con el while.
probe poner el while de otra forma y con un if pero solo se mueve una vez y eso no sirve, se tiene que mover siempre que se lo quiera apuntar con el mouse asi no se puede clickear... les dejoj el codigo
Private Sub Button1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button1.MouseMove
Dim x As Integer, y As Integer
x = 32
y = 272
While (y > 220)
y = y - 3
Button1.Location() = New Point(x, y)
End While
End Sub
Primero, esto no es vb6 amigo... tu mismo has dicho que trabajas en Visual Studio, pues dicha plataforma lleva integrada el framework de .NET
Segundo: el control por lo que veo (no he probado el código) solo se movería una vez ya que cada vez que se llama al evento MouseEvent declaras la variable Y con el mismo valor.
Entonces tenemos que la expresión y = y - 3 tendrá siempre el mismo valor, por lo que uno deduce que solo se moverá una vez el botón. ¿Qué hacer? Manejar Y habiendo declarado la variable de forma global.
Saludos.
ok pero como hago que para en vez de declararle yo un valor a x o a y, ponerle el valor de las coordenadas actuales?
algo asi como
dim x as integer
x= button.location x
o algo asi, ni idea porque es la primera vez que uso visual
yo nunca dije que era visual basic 6
Lo del vb6 lo digo porque estás en el foro de Vb no de .NET y el código está etiquetado y coloreado bajo VB.
Te dejo lo que pides, simplemente obtengo las coordenadas actuales del Button y comienza un bucle que mueve el control mientras Y sea menor que 220:
Public Sub Mover_Button()
Dim X as Integer = Button1.Location.X
Dim Y as integer = Button1.Location.Y
While Y > 220
Y-=3
Button1.Location = New Point(X,Y)
End While
End Sub
Saludos!
Y porque usas while? Si en realidad es el mismo usuario el que hace el ciclo :P
Cada vez que toques el boton, lo mueves hacia arriba si no supero cierto punto. Algo asi
Public Sub Mover_Button()
Dim X as Integeger = Button1.Location.X
Dim Y as integer = Button1.Location.Y
If Y > 200 Then
Y-=3
Button1.Location = New Point(X,Y)
End If
End Sub
ahi va muchas gracias... 2 cosas mas y no jodo
1 - Como hago para que no se le pueda hacer "focus" o ponerle a "gotfocus" que inmediatamente le de focus a otro boton
2 - Recomiendenme un manual, libro, o cursito online. yo ya se algo de C# pero nada de visual studio
muchas gracias ! :D
Se me olvido modificar el bucle, simplemente lo escribi todo de una tajada :D
El programa correría perfectamente si reemplazas el bucle por una sentencia condicional.
Saludos.
Para que un usuario no pueda establecer el foco en el Button mediante el Tabulador cambia la propiedad TabStop del Button a True.
Con el valor cambiado a True podrías perfectamente mover el Button en la direccion que quieras.
Por ejemplo:
Public Sub Mover_Button()
Dim X As Integer = Button1.Location.X
Dim Y As Integer = Button1.Location.Y
If Y > 90 Then
Y -= 2
Button1.Location = New Point(X, Y)
Else
Button1.Location = New Point(X, 150)
End If
End Sub
Saludos.
Tutorial vb.net de elGuille (http://www.elguille.info/NET/cursoVB.NET/default.aspx)
Usa el metodo Focus