Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: otakuzz en 12 Septiembre 2014, 06:00 am



Título: [Resuelto] visual basic.net abrir un formulario en un panel
Publicado por: otakuzz en 12 Septiembre 2014, 06:00 am
hola amigos del foro buenas noches mi problema es el siguiente, tengo un formulario con 2 botones y un panel y quiero abrir un formulario al dar click en uno de los botones y al dar click en otro el primero se cierre y se abre el siguiente perdon mi lexico no se bien como explicarlo les dejo el codigo que no se een que estoy fallando el codigo es en visual basic.net 2013



Public Class Form1

    Private Sub BBI_PV_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BBI_PV.ItemClick
        frmCaja.TopLevel = False
        frmCaja.FormBorderStyle = Windows.Forms.FormBorderStyle.None
        frmCaja.Dock = DockStyle.Fill
        P_Main.Controls.Add(frmCaja)
        frmCaja.Show()
    End Sub

    Private Sub BBI_Con_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BBI_Con.ItemClick
        frmAlmacen.TopLevel = False
        frmAlmacen.FormBorderStyle = Windows.Forms.FormBorderStyle.None
        frmAlmacen.Dock = DockStyle.Fill
        P_Main.Controls.Add(frmAlmacen)
        frmAlmacen.Show()
    End Sub


Título: Re: [Ayuda] visual basic.net abrir un formulario en un panel
Publicado por: XresH en 12 Septiembre 2014, 06:48 am
Creo entender lo que necesitas, pero exactamente tal vez no pensemos lo mismo, yo te muestro el codigo para abrir un formulario nuevo y el anterior cerrarlo, este code funciona si la configuracion de tu Vb es la adecuada (dependiendo la opcion de tu "modo de apagado", que pienso que esta por default (al cerrar el form principal, por lo que no te servira)

Código
  1.       Form2.Show()
  2.        Me.Close()


Deberia bastarte, se entiende que "me", se refiere al formulario que estas viendo, y queres cerrar priori de la carga del form 2, que de manera consecutiva queres verlo y que no quede el form1 ocupando memoria.

Saludos.





Título: Re: [Ayuda] visual basic.net abrir un formulario en un panel
Publicado por: otakuzz en 12 Septiembre 2014, 11:25 am
gracias amigo pero no es lo que necesito lo que necesito que cuando form2 se abra el form2 automaticamente se cierre


Título: Re: [Ayuda] visual basic.net abrir un formulario en un panel
Publicado por: XresH en 12 Septiembre 2014, 22:46 pm
A ver si entiendo, queres que al terminar de cargar el form, automaticamente se cierre el mismo que carga?



Título: Re: [Ayuda] visual basic.net abrir un formulario en un panel
Publicado por: otakuzz en 13 Septiembre 2014, 03:32 am
mira lo que quier es lo siguiente, vamos a suponer que tienes en el form padre 2 botones y un panel al dar click en boton uno aparezca form hijo 1 y al dar click en el boton 2 aparezca el form hijo 2, el codigo que puse arriba hace mas o menos lo mismo pero al momento de hacer click en el boton 2 este no funciona porque ya esta un form abierto, lo que quiero es que cargue el form hijo 2 eliminando el form hijo


Título: Re: [Ayuda] visual basic.net abrir un formulario en un panel
Publicado por: XresH en 13 Septiembre 2014, 03:44 am
Bueno, vamos de a poco, a ver si logro comprenderte, el tema es el siguiente, para abrir:

Código
  1. NombreForm.Show()

O en consiguiente en forma "Modal":

Código
  1. NombreForm.ShowDialog()

Para cerrar:

Código
  1. NombreForm.Close()

Esto esta claro hasta ahi, ahora bien, facilitame el codigo o parte del mismo para poder guiarte, entiendo que es un problema entre formularios hijos, si lo abris en modo "modal" (ShowDialog()) o solamente lo "llamas" desde la instruccion ".Show"
Calculo que por ahi viene el truco de que no puedas lograr lo que queres, y sumado a que no logro comprenderte bien, ocaciona esto.

EDITO: en lo posible facilitame los controles que usas y el tipo de Form, o lo de forms hijos era a modo de ejemplo?

Saludos.


Título: Re: [Ayuda] visual basic.net abrir un formulario en un panel
Publicado por: otakuzz en 13 Septiembre 2014, 23:55 pm
Hola amigo aqui esta el codigo esta en rar

https://mega.co.nz/#!2hNWQLhZ!TAVulOpZOGQRksxmh2yAr206J1Bd5eaSdXbtX6FkQQ4


Título: Re: [Ayuda] visual basic.net abrir un formulario en un panel
Publicado por: XresH en 14 Septiembre 2014, 00:55 am
mira lo que quier es lo siguiente, vamos a suponer que tienes en el form padre 2 botones y un panel al dar click en boton uno aparezca form hijo 1 y al dar click en el boton 2 aparezca el form hijo 2, el codigo que puse arriba hace mas o menos lo mismo pero al momento de hacer click en el boton 2 este no funciona porque ya esta un form abierto, lo que quiero es que cargue el form hijo 2 eliminando el form hijo

Cuando te referis a que no funciona, le haces clic y no hace nada? no podes hacerle clic porque otra ventana (form) te bloquea? o a que exactamente?


Título: Re: [Ayuda] visual basic.net abrir un formulario en un panel
Publicado por: otakuzz en 14 Septiembre 2014, 00:59 am
me refiero que cuando haces click en el boton 1 se abre fomhijo 1 pero al darle click en el boton 2 no pasa nada, se tendria que abrir el formhijo2 pero no hace nada se bloquea, subi el proyecto a mega te puse el link


Título: Re: [Ayuda] visual basic.net abrir un formulario en un panel
Publicado por: XresH en 14 Septiembre 2014, 03:02 am
No puedo verlo correctamente por eso te pregunto, es porque tengo una version posterior a donde estas programando vos, lo abre pero parcialmente, decime, vos usas todos con forms comunes o usas alguno MDI?


Título: Re: [Ayuda] visual basic.net abrir un formulario en un panel
Publicado por: otakuzz en 14 Septiembre 2014, 17:51 pm
lo uso con forms comunes, e aquí el código completo del form:

Código:

Public Class Form1

    Private Sub Btn_1_Click(sender As Object, e As EventArgs) Handles Btn_1.Click
        frmCaja.TopLevel = False
        frmCaja.FormBorderStyle = Windows.Forms.FormBorderStyle.None
        frmCaja.Dock = DockStyle.Fill
        P_Main.Controls.Add(frmCaja)
        frmCaja.Show()
    End Sub

    Private Sub Btn_2_Click(sender As Object, e As EventArgs) Handles Btn_2.Click
        frmhijo2.TopLevel = False
        frmhijo2.FormBorderStyle = Windows.Forms.FormBorderStyle.None
        frmhijo2.Dock = DockStyle.Fill
        P_Main.Controls.Add(frmCaja)
        frmhijo2.Show()
    End Sub
End Class



Título: Re: [Ayuda] visual basic.net abrir un formulario en un panel
Publicado por: XresH en 14 Septiembre 2014, 18:47 pm
Adapte el codigo a un proyecto que hice yo y si le saco en ambos eventos del clic boton:

Código
  1. frmCaja.TopLevel = False


Me abre los dos correctamente, si le dejo esa linea no los abre(lo mismo que tepasa a vos), lo que pasa es que si estas abriendo el formulario con ".Show" no es de manera modal, no necesitas especificar el TopLevel en false.

Fijate si te sirve sacandole esa linea.

Saludos.


Título: Re: [Ayuda] visual basic.net abrir un formulario en un panel
Publicado por: otakuzz en 15 Septiembre 2014, 00:31 am
no me funciono, encontre un codigo en c# e aqui el link:

https://mega.co.nz/#!L5kkmShB!_FfVXBFQ-qd8Bzxjhy6rLl6sBQgLNClJnkJ5r2vtLGs

quiero ver si lo puedo pasar a basic, ¿crees que se pueda?


Título: Re: [Ayuda] visual basic.net abrir un formulario en un panel
Publicado por: otakuzz en 15 Septiembre 2014, 01:00 am
Amigo ya lo resolvi te adjunto el codigo:

Código:
Public Class Form1

    Private Sub Btn_1_Click(sender As Object, e As EventArgs) Handles Btn_1.Click
        If Me.P_Main.Controls.Count > 0 Then
            Me.P_Main.Controls.RemoveAt(0)
        End If
        Dim hijo1 As New frmCaja()
        hijo1.TopLevel = False
        hijo1.FormBorderStyle = FormBorderStyle.None
        hijo1.Dock = DockStyle.Fill
        Me.P_Main.Controls.Add(hijo1)
        Me.P_Main.Tag = hijo1
        hijo1.Show()
    End Sub

    Private Sub Btn_2_Click(sender As Object, e As EventArgs) Handles Btn_2.Click
        If Me.P_Main.Controls.Count > 0 Then
            Me.P_Main.Controls.RemoveAt(0)
        End If
        Dim hijo2 As New frmhijo2()
        hijo2.TopLevel = False
        hijo2.FormBorderStyle = FormBorderStyle.None
        hijo2.Dock = DockStyle.Fill
        Me.P_Main.Controls.Add(hijo2)
        Me.P_Main.Tag = hijo2
        hijo2.Show()
    End Sub
End Class


Gracias por tu ayuda y me parecio interesante tu Blog, terminando mi proyecto me gustaria que lo publicaras


Título: Re: [Ayuda] visual basic.net abrir un formulario en un panel
Publicado por: XresH en 15 Septiembre 2014, 17:44 pm
Que bueno que hayas solucionado, 2 personas del foro ya han compartido material para mi blog, con gusto recibiria el tuyo.

Te pido que añadas al titulo del tema un prefijo "Solucionado" o hagas clic sobre el icono de "Resuelto", sino queda abierto aun como interrogante.

Saludos.