Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: K1ll1ng M4ch1n3 en 1 Agosto 2010, 20:38 pm



Título: Dudas con diseño de formularios en VB 2008
Publicado por: K1ll1ng M4ch1n3 en 1 Agosto 2010, 20:38 pm
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.


Título: Re: Dudas con diseño de formularios en VB 2008
Publicado por: BlackZeroX en 1 Agosto 2010, 20:46 pm
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!¡.


Título: Re: Dudas con diseño de formularios en VB 2008
Publicado por: seba123neo en 1 Agosto 2010, 20:58 pm
primero deci que es realmente lo que queres hacer, sino no sabemos si la solucion es otro control.

saludos.


Título: Re: Dudas con diseño de formularios en VB 2008
Publicado por: K1ll1ng M4ch1n3 en 1 Agosto 2010, 21:03 pm
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.


Título: Re: Dudas con diseño de formularios en VB 2008
Publicado por: [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..


Título: Re: Dudas con diseño de formularios en VB 2008
Publicado por: raul338 en 2 Agosto 2010, 00:28 am
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


Título: Re: Dudas con diseño de formularios en VB 2008
Publicado por: K1ll1ng M4ch1n3 en 2 Agosto 2010, 15:57 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...

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


Título: Re: Dudas con diseño de formularios en VB 2008
Publicado por: raul338 en 2 Agosto 2010, 16:12 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


Título: Re: Dudas con diseño de formularios en VB 2008
Publicado por: K1ll1ng M4ch1n3 en 2 Agosto 2010, 16:56 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!!


Título: Re: Dudas con diseño de formularios en VB 2008
Publicado por: 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


Título: Re: Dudas con diseño de formularios en VB 2008
Publicado por: K1ll1ng M4ch1n3 en 2 Agosto 2010, 23:46 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.


Título: Re: Dudas con diseño de formularios en VB 2008
Publicado por: [D4N93R] en 3 Agosto 2010, 14:41 pm
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


Título: Re: Dudas con diseño de formularios en VB 2008
Publicado por: raul338 en 3 Agosto 2010, 17:26 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)


Título: Re: Dudas con diseño de formularios en VB 2008
Publicado por: K1ll1ng M4ch1n3 en 4 Agosto 2010, 00:05 am
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.


Título: Re: Dudas con diseño de formularios en VB 2008
Publicado por: raul338 en 4 Agosto 2010, 00:36 am
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


Título: Re: Dudas con diseño de formularios en VB 2008
Publicado por: K1ll1ng M4ch1n3 en 4 Agosto 2010, 23:23 pm
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

Código
  1. Option Strict Off
  2. Option Explicit On
  3.  
  4. Public Class Form1
  5.    Inherits System.Windows.Forms.Form
  6.    Dim Form2 As New Form
  7.    Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Integer, ByVal hWndNewParent As Integer) As Integer
  8.  
  9.    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  10.        Dim ret As Integer
  11.        ret = SetParent(Form2.Handle.ToInt32, Me.Handle.ToInt32)
  12.        Form2.Show()
  13.    End Sub
  14.  
  15.    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
  16.        Dim ret As Integer
  17.        ret = SetParent(Form2.Handle.ToInt32, 0)
  18.        Form2.Show()
  19.    End Sub
  20. End Class

(http://r.i.elhacker.net/cache?url=http://s2.subirimagenes.com/otros/4915549formularioincrustado.jpg)