Botones Visual Basic .NET

viKtorJ

Hola necesito saber una cosilla.

A ver si me se explicar.

En un formulario de VB.NET tengo un boton, el cual en tiempo de ejecución me crea otros 3 botones, pero los tengo que crear Visible = False y necesito que clickeando donde se supone que estan, se hagan visibles. No se si me he explicado bien.

En definitiva quiero saber si un boton que esta invisible, se puede clickear encima de el y que el Evento Click haga que se muestre y se vea en el formulario, pero en tiempo de ejecucion.

Espero una respuesta porfavor.

Saludos!

radykal

No, un botón invisible no recoge los clicks encima de la posición que ocuparía si estuviese invisible, tendrás que hacerlo con otro tipo de control intermedio, algo tipo panel del mismo color que el formulario y sin borde que al hacer click encima ponga visible el botón.

tOWERR

#1

Lo que dice #2 es cierto, lo que podrias hacer es con un temporizador, nose si los hay en vb.net
que al cabo de 2 o 3 segundos, se pongan visibles esos botones y el temporizador le paras.
Y listo, espero que te sea de ayuda.

radykal

Si la solución mía de antes no te sirve y tampoco la de #3 podrías hacer un evento global del formulario que al hacer click sobre el formulario mirase la coordenada del click y si coincide que esa coordenada está en algún punto de alguno de esos botones te cambie el Visible=True en el que toque... pero es bastante más código que cualquiera de las dos soluciones anteriores.

viKtorJ

#4 y eso mas o menos como se haria? porque no se hacer eventos generales... o eso creo xD

Amazon

Inserta un panel/label/whatever que cuando pinches en él, los botones cambien a visible xd, es lo más facil

radykal

En la ventana de código del formulario deberias tener dos desplegables en la parte superior, uno con los objetos y otro con los eventos. Seleccionas el objeto del formulario y en el de eventos busca MouseClick o Click. Dentro de ese evento podrás acceder a la posicion del cursor en el momento del click mediante e.X y e.Y. Para comprobar si las coordenadas coinciden con alguno de los botones tendrás que currártelo un poco. La solución fácil es la descrita en #2

Soltrac

Tienes 2 opciones.

1 Fomulario y usar el evento MouseClick.

2 Coloca paneles invisibles en esa posición y cuando ocultes los botones los paneles recibirán los eventos. Recuerda hacer SendToBack() a los paneles cuando muestres los botones para que no queden encima.

viKtorJ

#6, el rollo y es una cosa que no he explicado, esque el programa en si es una especie de hundir la flota y el profesor lo pide asi, que en un panel azul, aparezcan aleatoriamente 3 botones con visible false y que al clickear encima de uno de ellos se haga visible.

Si, yo tampoco haria el juego asi, pero es lo que me han pedido.

#7, lo acabo de probar y no funciona. He hecho esto...

    If Disparo.Location = Submarino.Location Then
        Submarino.Visible = True
    End If

    If Disparo.Location = Destructor.Location Then
        Destructor.Visible = True
    End If

    If Disparo.Location = Portaaviones.Location Then
        Portaaviones.Visible = True
    End If

#8, no puedo usar eso, solo puedo usar botones en el panel y me estoy volviendo loco para hacerlo jaja

Isengard

#9 Y si en vez de usar una localización tan específica usas un rango de valores... es que para acertar justo en la localización siempre lo veo más complicado... pon que sea algo así como

if (Posicion_X_Disparo > 0 && Posicion_X_Disparo < 10) && (Posicion_Y_Disparo > 0 && Posicion_Y_Disparo < 10)
Submarino.Visible = True
end if

viKtorJ

Lo he solucionado poniendo los botones sin borde y sin estilo y los he hecho del mismo color que el fondo, porque sino no hay manera.

Gracias a todos por la ayuda =)

Usuarios habituales

  • viKtorJ
  • Isengard
  • Soltrac
  • radykal
  • Amazon
  • tOWERR