none
Crear un Groupbox en tiempo de ejecucion , con las propiedades copiadas de otro groupbox. Visual Basic RRS feed

  • Pregunta

  • Que Tal, tengo algunos problemas en mi desarrollo espero que me puedan ayudar.

    1: Deseo crear un groupbox en tiempo de ejecución, ya sea se cree uno nuevo, se clone o copie, pero que sea igual a un groupbox que tengo por default. el cual contiene 3 labels.

    2: al crearlo que tenga la propiedad de arrastrar y soltar en el formulario.

    3: Poder eliminar los groupbox creados con boton eliminar.

    El Groupbox que tengo ya tiene todas estas propiedades mencionadas, solo requiero clonarlo copiarlo tantas veces que el usuario precione el boton.

    Gracias, quedo pendinte de sus comentarios,


    roberto

    viernes, 1 de julio de 2016 20:10

Todas las respuestas

  • Hola Rovertmvk,

    Te recomendaría que crees un control de usuario (User Control) en el cual establezcas las mismas propiedades y funcionalidades antes mencionadas, así podrás crear nuevas intancias (new MiControl()) en tiempo de ejecución y añadirlas al formulario sin problemas.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    viernes, 1 de julio de 2016 22:28
  • Que tal JC NaupaCrispín 

    Primero que nada gracias por atender mi solicitud tan rapido, quedo muy agradecido, lo siguiente es solicitarte el apoyo de un ejemplo como crear el codigo para agregar un User control y mandarlo llamar por medio de un boton,

    te comento que trate con varias formas que utilizan funciones para clonar  pero ninguna me funciono, al presionar el boton donde se encuentra la función pareciera que si lo clona el groupbox pero no se ve el orignal, o viceversa, solo aparece 1 grupobox sin verse la reproducción de varios objetos en tiempo de ejecución.

    Quedo pendiente de tu respuesta.

    Gracias Saludos.


    roberto

    sábado, 2 de julio de 2016 8:48
  • Hola Rovertmvk,

    En realidad crear un control de usuario no es tan difícil, solo necesitas conocer las propiedades de tu Control (en este caso el GroupBox).

    - A tu proyecto agrégale un nuevo elemento, de tipo Control de usuario :

    Y te creará una clase con un panel, donde tienes que crear el GroupBox con los elementos y funcionalidades que mencionaste en tu pregunta, además debes activar la opción Dock = Fill para que el GB ocupe todo el contenedor del control de usuario. Y Listo.

    Luego solo instancias, la clase y cambias la Location para que se vea.

    [-] Mi Diseño de Control de Usuario :

    [-] Creo 2 GB

     Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    
            Dim nuevo1 As New GroupBoxPersonalizado
            nuevo1.Location = New Point(10, 10)
    
            Dim nuevo2 As New GroupBoxPersonalizado
            nuevo1.Location = New Point(160, 0)
    
            Me.Controls.Add(nuevo1)
            Me.Controls.Add(nuevo2)
    
        End Sub

    Resultado :

    [-] te comento que trate con varias formas que utilizan funciones para clonar  pero ninguna me funciono, al presionar el boton donde se encuentra la función pareciera que si lo clona el groupbox pero no se ve el orignal

    Has cambiado la propiedad Location? Lo menciono porque al clonarlo obtienes las mismas propiedades del GB anterior, por lo que si no lo cambias mostrará uno encima de otro, y como son iguales parecerá que no pasó nada.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    sábado, 2 de julio de 2016 18:07
  • Una forma podría ser:

    Para el groupbox:

    C#:

    GroupBox gb = GroupBox1; // el groupbox gb será igual que el GroupBox1 (o como se llame)
    Controls.Add(gb);

    VB:

    Dim gb As GroupBox = GroupBox1 'el groupbox gb será igual que el GroupBox1 (o como se llame)
    Controls.Add(gb)

    Para el boton eliminar:

    C#:

    private void btn_eliminar (object sender, EventArgs e)
    {
           foreach(Control ctrl in this.Controls)
           {
                 if (ctrl.GetType().FullName == "System.Windows.Forms.GroupBox")
                 {
                        GroupBox gb = (GroupBox)ctrl; // Convertimos el control en GroupBox
                        gb.Controls.Remove(El Nombre del control para eliminar);
                  }
           }
    }

    VB:

    private sub btn_eliminar (byval sender as object, byval e as eventargs)
           for each(ctrl as control in me.Controls)
                 if ctrl.GetType().FullName = "System.Windows.Forms.GroupBox" Then
                        GroupBox gb = CType(ctrl, GroupBox) 'Convertimos el control en GroupBox
                        gb.Controls.Remove(El Nombre del control para eliminar)
                  End If
           Next
    End Sub

    Espero que te sirva,

    Gerry Soft

    domingo, 3 de julio de 2016 9:01