Como ocultar el formulario en vb.net

Iniciado por Borito30, 4 Junio 2017, 23:09 PM

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

Borito30

Mi pregunta es como puedo hacer para ocultar el formulario sin que apareciese, ya que al ponerlo como consola tampoco es lo que busco. Entonces mi pregunta es hay alguna manera de ocultar el formulario en caso de que no fuese necesario? He intentado con opacity,incluso con Hide:

Me.Hide()
Como podría hacer para que no sea visible.

Saludos.
Estoy en contra del foro libre y la Sección de juegos y consolas (distraen al personal)

Serapis

Hay varias formas...

Desde luego usar una aplicación como consola es la mejor solución. Básta añadir un módulo y crear el método público Main... y ya desde ahí abres el formulario que quieras, o ninguno...
Código (vbnet) [Seleccionar]
Module Module1
   Dim f As New Form1

   Public Sub main()

       f.Show()
       '  f.ShowDialog() ' según lo que convenga al caso...
        ' o simplemente no lo muestras y ejecutas código, desde la instancia 'f'
   End Sub
End Module


Si persistes en usar una aplicación windows forms (no es tan relevante el caso), entonces lo tienes que hacer desde el evento Mostrado:

Código (vbnet) [Seleccionar]
Private Sub Form1_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown
       Me.Visible = False
   End Sub


Eleкtro

#2
Cita de: Ragaza en  4 Junio 2017, 23:09 PM,i pregunta es hay alguna manera de ocultar el formulario en caso de que no fuese necesario? He intentado con opacity,incluso con Hide:

Me.Hide()

Ya estás utilizando el método correcto para ocultar el form. Si tienes un problema entonces describe con todos los detalles posibles cual es el problema, para intentar darte una solución. Dices que el Form no se oculta al llamar al método Form.Hide(), pues bien, describe en que evento/lugar del código del Form lo estás intentando usar. Muestra tu código.

Debes tener en cuenta que en pocas palabras la ventana de un Form no existe hasta que es visible, y por ende cualquier intento de llamar al método Form.Hide() o la propiedad Form.Visible será ignorado, si por ejemplo lo estás intentando ocultar cuando se dispara el evento Form.OnLoad o en el constructor del Form, pues ahí todavía la ventana no existe, no se ha creado un handle de ventana.

En otras palabras eso también significa que un Form siempre se va a mostrar, aunque sea por un instante (produciendo un parpadeo) antes de que puedas ocultarlo. Pero esto podemos evitarlo, existe una solución...

Si tu intención es instanciar un Form y que éste no sea visible hasta que realmente sea necesario, entonces puedes anular/sustituir el método base Form.SetVisibleCore:

Código (vbnet) [Seleccionar]
Public NotInheritable Class Form1 : Inherits Form

   Public Sub New()
       MyClass.InitializeComponent()
   End Sub

   Protected Overrides Sub SetVisibleCore(ByVal value As Boolean)
       If Not (MyBase.IsHandleCreated) Then
           value = False
           MyBase.CreateHandle()
       End If
       MyBase.SetVisibleCore(value)
   End Sub

End Class

De esa forma nunca se llegará a ver el Form ni por un instante, a menos que llames al método Form.Show por primera vez.

Ten en cuenta también que al utilizar esta solución, el evento Form.OnLoad no se producirá hasta que la ventana sea visible, así que si tuvieras instrucciones escritas en el bloque del controlador Form.Load:
Código (vbnet) [Seleccionar]
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
   ' ...
End Sub

...entonces deberías moverlo al constructor de la clase.

Saludos.