none
formulario dentro de un groupbox RRS feed

  • Pregunta

  • Buenas,

    tengo la sensación de que el problema que tengo es muy simple, pero no logro solucionarlo. Tengo un form principal con un groupbox y un botón. Al clickar el boton deseo que se abra un form secundario dentro del groupbox.

    Según lo entendido esto debería funcionar (Código que pongo en el evento del click del boton):

    ventanasecundaria child;
    child.TopLevel=false;
    child.Parent = groupBox1;
    child.Show();

    Donde: ventanasecundaria (es el form secundario)

    Bueno, pues al iniciarlo y clickar el botón se abre el form secundario pero no está visible. Es decir, parece que se abre bien pero se oculta detrás del groupbox rápidamente.

    Espero me ayudéis con este problema, muchas gracias.


    Miguel Alonso - Desarrollador

    viernes, 20 de abril de 2012 11:17

Respuestas

  • hola

    no uses un groupbox usa un Panel

    http://social.msdn.microsoft.com/Forums/es-ES/vcses/thread/90ac43a8-ed6e-4d0c-a900-5daca0e20641

    usa la tecnica que menciono en el link, o sea user control que cargas en el panel

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    viernes, 20 de abril de 2012 18:02
  • Hola.

    Es que el UserCcontrol no puede contener un Form, ya que es un control contenedor de nivel superior.

    En este caso el UserControl haria la vez del Form que quieres contener en el GroupBox, con la diferencia que en ese UserControl trabajarias en tiempo de diseño igual que si lo hicieras con un Form normal.

    O sea, el GroupBox sera el contenedor del UserCotrol.

    Ejemplo:

    UserControl en tiempo de diseño.

    UserControl

    Formulario padre, o sea, el que contiene el GroupBox que contendra al UserControl.

    Formulario contenedor.

    Codigo para agregar el UserControl al GroupBox del Form.

    var uc = new UCDatos();
    this.groupBox1.Controls.Add(uc);
    uc.Dock = DockStyle.Fill;

    Cuando hagas click en el boton Agregar del Form se agregara el UserControl en el GroupBox, y luego de que se haya cargado si se hace click en cargar, el Grid se llena con la info que le ponga (En este caso una lista).

    PD: Puede llenar el UserControl con los controles que desee.

    Saludos.



    lunes, 23 de abril de 2012 11:56
  • Hola

    Porque no creas un user control y lo agregas alli?

    Pero si lo quieres hacer asi, necesitas crear una instancia del formulario nuevo antes de agregarlo, y luego de eso necesita sobre escribir el metodo OnPaint y le dice las coordenadas donde siempre desea que se dibuje el formulario, esto asi porque el control Form es de jerarquia superior, o un contenedor de un GroupBox... por eso mejor le recomiendo que utilice un UserControl con toda la informacion, y ahi si que no tendra problemas ;).

    Saludos.

    viernes, 20 de abril de 2012 12:21
  • Hola.

    Lo que comenta Leonardo es tambien una excelente opcion, pero como supongo que lo que desea es un formulario para tener en el arrastrar y soltar controles en el, y en tiempo de ejecucion cargarlo, supongo que el UserControl es un buena opcion tambine.

    Saludos.

    viernes, 20 de abril de 2012 18:06

Todas las respuestas

  • Hola

    Porque no creas un user control y lo agregas alli?

    Pero si lo quieres hacer asi, necesitas crear una instancia del formulario nuevo antes de agregarlo, y luego de eso necesita sobre escribir el metodo OnPaint y le dice las coordenadas donde siempre desea que se dibuje el formulario, esto asi porque el control Form es de jerarquia superior, o un contenedor de un GroupBox... por eso mejor le recomiendo que utilice un UserControl con toda la informacion, y ahi si que no tendra problemas ;).

    Saludos.

    viernes, 20 de abril de 2012 12:21
  • hola

    no uses un groupbox usa un Panel

    http://social.msdn.microsoft.com/Forums/es-ES/vcses/thread/90ac43a8-ed6e-4d0c-a900-5daca0e20641

    usa la tecnica que menciono en el link, o sea user control que cargas en el panel

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    viernes, 20 de abril de 2012 18:02
  • Hola.

    Lo que comenta Leonardo es tambien una excelente opcion, pero como supongo que lo que desea es un formulario para tener en el arrastrar y soltar controles en el, y en tiempo de ejecucion cargarlo, supongo que el UserControl es un buena opcion tambine.

    Saludos.

    viernes, 20 de abril de 2012 18:06
  • Efectivamente, la solución debe ser un usercontrol por lo que he leído. Sin embargo no termino de entender como vincular mi formsecundario al usercontrol.

    ventanasecundaria child;  //Creo el formsecundario
    System::Windows::Forms::UserControl ^ usercont; //Creo el usercontrol

    ???? //Debo relacionar de algún modo el nuevo form al usercont¿?

    panel1->Controls->Add(usercont); //Se lo asigno al panel

    Siento las molestias, soy un poco nuevo en esto..espero que me podáis ayudar. Muchas gracias,

    Saludos.


    Miguel Alonso - Desarrollador

    lunes, 23 de abril de 2012 8:32
  • Hola.

    Es que el UserCcontrol no puede contener un Form, ya que es un control contenedor de nivel superior.

    En este caso el UserControl haria la vez del Form que quieres contener en el GroupBox, con la diferencia que en ese UserControl trabajarias en tiempo de diseño igual que si lo hicieras con un Form normal.

    O sea, el GroupBox sera el contenedor del UserCotrol.

    Ejemplo:

    UserControl en tiempo de diseño.

    UserControl

    Formulario padre, o sea, el que contiene el GroupBox que contendra al UserControl.

    Formulario contenedor.

    Codigo para agregar el UserControl al GroupBox del Form.

    var uc = new UCDatos();
    this.groupBox1.Controls.Add(uc);
    uc.Dock = DockStyle.Fill;

    Cuando hagas click en el boton Agregar del Form se agregara el UserControl en el GroupBox, y luego de que se haya cargado si se hace click en cargar, el Grid se llena con la info que le ponga (En este caso una lista).

    PD: Puede llenar el UserControl con los controles que desee.

    Saludos.



    lunes, 23 de abril de 2012 11:56
  • Hola,

    muchas gracias Alan y Leandro. Finalmente he logrado entender y que funcione correctamente con el usercontrol.

    Estoy empezando a desarrollar una aplicación que posiblemente sea, en un futuro, bastante pesada. La he empezado a implementar en C++ pero creo que igual encuentro más ejemplos, tutoriales,etc. si lo realizo en C# u otro lenguaje. Me podríais aconsejar sobre esto? Muchas gracias.

    PD. Aunque no debería escribir en este hilo es que no encontré la manera de escribiros personalmente.


    Miguel Alonso - Desarrollador

    lunes, 23 de abril de 2012 14:26
  • Porque no usas C#? necesitas acceso directo a HW u opciones avanzadas de SO que no te provea C# y si C++?

    Para comenzar te recomendaria un lenguaje como C# o VB.Net.

    Aqui y en otros lugares encontraras bastante informacion sobre el tema ;).

    Saludos.

    lunes, 23 de abril de 2012 14:40
  • Me es indiferente implementarla en C++ o C#. No requiere acceso a HW ni opciones de SO, de modo que implementaré en C# puesto que creo que hay más material de ayuda. Si este foro lo visito con mucha frecuencia aunque no me habia registrado hasta hace dos días, posiblemente tendréis más noticias mías..jejeje. Gracias,

    saludos


    Miguel Alonso - Desarrollador

    lunes, 23 de abril de 2012 14:54