Hola de nuevo!
Mi problema es el siguiente: tengo un formulario que quiero usar para distintas funciones y quiero dividirlo en pestañas o algo similar. Estuve usando un tiempo el tabcontrol, pero aparte de que me dificultaba bastante el manejo de los componentes en la vista diseño, no se pueden desactivar las pestañas y encima me ralentizaba muchísimo el contenido.
Entonces mi idea era dividir el contenido en distintos contenedores y poner arriba unos botones a modo de pestaña y que se muestre/oculte el contenedor que toque, pero me encuentro con el problema de que entonces, en la vista de diseño, tendría todos los contenedores unos encima de otros y no podría ver más que uno. Por otra parte, al estar cargando todo el contenido, podría ralentizar el programa.
Qué solución tiene esto? Hay algún otro componente de pestañas que funcione mejor o alguna forma de crear mis propias pestañas fácilmente?
Un saludo y gracias de antemano.
Dibuja los controles dentro de un pictureBox!¡. jajaja ya no sirve en .NET!¡. :xD
P.D.: Este tema debe ir en .Net (http://foro.elhacker.net/net-b62.0/)
Dulces Lunas!¡.
primero deci que es realmente lo que queres hacer, sino no sabemos si la solucion es otro control.
saludos.
Quiero separar el contenido del formulario en varias "pestañas", de forma que cada pestaña tiene una cosa distinta. Algo tipo Firefox o cualquier otro navegador. El problema es que si uso contenedores y se muestra únicamente el correspondiente a la pestaña que se quiere ver, como quiero que siempre los contenedores tengan la misma posición, al ponerlo uno encima de otro en la vista diseño, no puedo ver el que hay debajo y es muy incómodo tener que moverlo de sitio cada vez que quiero modificar otro contenedor.
Lo que quiero hacer es suplir la ausencia del controltab que me ha dado muchos problemas.
Espero haberme explicado mejor ahora.
Un saludo.
Nunca me ha fallado el TabControl.. además hace exactamente lo que describes con paneles y botones..
Cita de: K1ll1ng M4ch1n3 en 1 Agosto 2010, 20:38 PM
Entonces mi idea era dividir el contenido en distintos contenedores y poner arriba unos botones a modo de pestaña y que se muestre/oculte el contenedor que toque, pero me encuentro con el problema de que entonces, en la vista de diseño, tendría todos los contenedores unos encima de otros y no podría ver más que uno. Por otra parte, al estar cargando todo el contenido, podría ralentizar el programa.
Qué solución tiene esto?
Simple, separa los contenedores y ubicalos uno encima de otro en el form load :P
Cita de: D4N93R en 1 Agosto 2010, 23:59 PM
Nunca me ha fallado el TabControl.. además hace exactamente lo que describes con paneles y botones..
El TabControl era justo lo que necesitaba, pero bajaba el scroll y veía como se iban dibujando los textbox y luego al subir pasaba lo mismo... y un datagridview que tenía en otra pestaña también me lo ralentizó mucho...
Cita de: raul338 en 2 Agosto 2010, 00:28 AM
Cita de: K1ll1ng M4ch1n3 en 1 Agosto 2010, 20:38 PM
Entonces mi idea era dividir el contenido en distintos contenedores y poner arriba unos botones a modo de pestaña y que se muestre/oculte el contenedor que toque, pero me encuentro con el problema de que entonces, en la vista de diseño, tendría todos los contenedores unos encima de otros y no podría ver más que uno. Por otra parte, al estar cargando todo el contenido, podría ralentizar el programa.
Qué solución tiene esto?
Simple, separa los contenedores y ubicalos uno encima de otro en el form load :P
Esa era la otra solución, pero aparte de ser muy cutre, me parecía muy engorrosa porque si quiero ver en vista de diseño un contenedor que no está en "primer plano" por así decirlo, tengo que cambiar su posición y poner delante al que tengo por ahí escondido...
No hay ninguna solución mejor? Si no hay nada más, usaré lo que dice
raul338, pero vamos... se me hace extraño que nadie más haya tenido el mismo problema
Cita de: K1ll1ng M4ch1n3 en 2 Agosto 2010, 15:57 PM
Esa era la otra solución, pero aparte de ser muy cutre, me parecía muy engorrosa porque si quiero ver en vista de diseño un contenedor que no está en "primer plano" por así decirlo, tengo que cambiar su posición y poner delante al que tengo por ahí escondido...
No hay ninguna solución mejor? Si no hay nada más, usaré lo que dice raul338, pero vamos... se me hace extraño que nadie más haya tenido el mismo problema
Nunca use un tabcontrol yo (un gran FAIL mio), pero he visto codigos así, contenedores uno al lado del otro que luego son posicionados uno encima de otro a travez de codigo (una vez vi como hacian un "asistente" usando paneles, exactamente de la misma forma) :P
No creas que habra alguna solucion mas "elegante" ya que todas hara lo mismo (que crees que hace el tab control :xD), si quieres hacerlo, ensuciate las manos :P
Cita de: raul338 en 2 Agosto 2010, 16:12 PM
Cita de: K1ll1ng M4ch1n3 en 2 Agosto 2010, 15:57 PM
Esa era la otra solución, pero aparte de ser muy cutre, me parecía muy engorrosa porque si quiero ver en vista de diseño un contenedor que no está en "primer plano" por así decirlo, tengo que cambiar su posición y poner delante al que tengo por ahí escondido...
No hay ninguna solución mejor? Si no hay nada más, usaré lo que dice raul338, pero vamos... se me hace extraño que nadie más haya tenido el mismo problema
Nunca use un tabcontrol yo (un gran FAIL mio), pero he visto codigos así, contenedores uno al lado del otro que luego son posicionados uno encima de otro a travez de codigo (una vez vi como hacian un "asistente" usando paneles, exactamente de la misma forma) :P
No creas que habra alguna solucion mas "elegante" ya que todas hara lo mismo (que crees que hace el tab control :xD), si quieres hacerlo, ensuciate las manos :P
Bueno... vale, muchas gracias pues xD.
Pero lo de llenar el formulario con todos los contenedores no sería cargar en memoria demasiadas cosas? Quizás sería mejor para evitar ralentizar, hacer que se crearan y se eliminaran los controles sobre la marcha, o son paranoias mías?
Lo que voy a hacer por ahora es diseñarlo todo en distintos formularios y que haya unos botones arriba simulando las pestañas y que se habra un formulario y se cierre otro cada vez, y una vez que ya tenga el diseño completo y no tenga que ir tocándolo a todas horas, lo pasaré a los contenedores para que sea un poco más limpio.
Gracias de nuevo!!
Si no lo que puedes hacer es hacer algo asi como "controles de usuario" e instanciarlos en tiempo de ejecucion, mostrandolos uno tras otro. Otra es incrustrar formularios dentro de uno que sea padre :P es cuestion de imaginar e ingeniarselas, para eso somos programadores no ? :P
Cita de: raul338 en 2 Agosto 2010, 17:44 PM
Si no lo que puedes hacer es hacer algo asi como "controles de usuario" e instanciarlos en tiempo de ejecucion, mostrandolos uno tras otro. Otra es incrustrar formularios dentro de uno que sea padre :P es cuestion de imaginar e ingeniarselas, para eso somos programadores no ? :P
Con lo de los formularios padre te refieres a crear un MDI?
Gracias por las respuestas, me habéis ayudado bastante.
No se si el TabControl te esté ralentizando, pero en caso de que así sea, crea tu propio control. Y olvidate de las opciones en tiempo de diseño, haces todo a código, de esa forma va a ir mucho más rápido. Creo. :P
Cita de: K1ll1ng M4ch1n3 en 2 Agosto 2010, 23:46 PM
Con lo de los formularios padre te refieres a crear un MDI?
Gracias por las respuestas, me habéis ayudado bastante.
Si y no, se puede hacer de las 2 formas :P (sin o con APIs resepectivamente)
Cita de: raul338 en 3 Agosto 2010, 17:26 PM
Cita de: K1ll1ng M4ch1n3 en 2 Agosto 2010, 23:46 PM
Con lo de los formularios padre te refieres a crear un MDI?
Gracias por las respuestas, me habéis ayudado bastante.
Si y no, se puede hacer de las 2 formas :P (sin o con APIs resepectivamente)
Supongo que la forma con APIs será algo así como crear un formulario aparte y luego cargarlo desde una especie de include o algo así, no?
Podrías ponerme algún ejemplo o algún link al msdn de eso para que pueda mirarlo más a fondo si no es mucho pedir? :S Me vendría muy bien, estuve pensando en hacer algo así, pero pensé que sería muy complejo.
De verdad muchas gracias por la ayuda.
EDITO: acabo de buscar en Google y creo que he encontrado a lo que te referías aquí (http://www.elguille.info/NET/dotnet/setParentNET.aspx)
Un saludo.
Exacto! :D A eso me referia, no es necesario que compiles cada formulario :laugh: solo usa las apis para poner cada formulario en su lugar ;-)
Suerte
Bueno, parece que ya lo he conseguido!! Pongo el código aquí por si alguien alguna vez busca lo mismo, que lo tenga ya hecho ;-) ;-)
Una dudilla, para mover las imágenes de sitio qué me recomendáis, usar el location o el move de la API? En principio las ventanas van a estar fijas en su sitio y no se van a mover ni el usuario va a saber que son distintos formularios
Option Strict Off
Option Explicit On
Public Class Form1
Inherits System.Windows.Forms.Form
Dim Form2 As New Form
Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Integer, ByVal hWndNewParent As Integer) As Integer
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim ret As Integer
ret = SetParent(Form2.Handle.ToInt32, Me.Handle.ToInt32)
Form2.Show()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim ret As Integer
ret = SetParent(Form2.Handle.ToInt32, 0)
Form2.Show()
End Sub
End Class
(http://r.i.elhacker.net/cache?url=http://s2.subirimagenes.com/otros/4915549formularioincrustado.jpg)