none
como crear una linea de codigo dinamicamente RRS feed

  • Pregunta

  •  

    Hola a todos,

     

    Solicito que por favor me ayuden con este problemita, tengo dos formas y de la forma1 envio unos datos hacia la forma2 para generar unos campos de forma dinamica.

     

    como en el diseno de la forma2 creo una linea como esta "

    private System.Windows.Forms.ComboBox comboBox;

    ", para asi poder crear diferentes componentes, osea como combobox la combierto en una variable para si crear diferentes combobox , o como creo toda la linea en el codigo dinamicamente,

     

    asi mismo la modificacion de

    this.label1.AutoSize = true;

    this.label1.Location = new System.Drawing.Point(12, 20);

    this.label1.Name = "label1";

    this.label1.Size = new System.Drawing.Size(186, 13);

    this.label1.TabIndex = 0;

    this.label1.Text = "Ingrese los Datos Del Item de la Clase";

     

    label1

     

    agradesco la atencion prestada a todos.

     

    o si hay una manera de hacer esto agradesco me informen

    gracias........

    martes, 5 de junio de 2007 23:56

Todas las respuestas

  •  

    Hola,

     

    No entiendo muy bien que es lo que quieres hacer,

     

    Pero para crear codigo dinamicamente debes utilizar reflection.

     

    Mira a ver si esto te ayuda:

     

    http://forums.microsoft.com/MSDN-ES/ShowPost.aspx?PostID=1532879&SiteID=11

     

    http://msdn2.microsoft.com/es-es/library/exczf7b9(VS.80).aspx

     

    Un saludo.

    miércoles, 6 de junio de 2007 6:41
    Moderador
  •  

    Hola anakim, aunque veo que el post es viejisimo, hacia tiempo que no miraba esta foro, y puede ser que la respuesta aun te interese, o pueda interesar a otra persona.

     

    Creo que entiendo tu duda y precisamente hace poco que he diseñado una serie de formularios con esa funcionalidad.

     

    En mi caso, yo defino los controles que se mostarán en un determinado formulario mediante una tabla en una base de datos. Esto se debe a que cierta información que debo recoger es muy cambiante (un dia se necesita unos datos y al siguiente han cambiado la mitad), lo que me obliga a mantener un sistema muy dinámico, casi a lo "access", para que el usuario final se lo pueda mantener.

     

    Lo primero es diferenciar que tipos de controles vas a crear, por ejemplo, yo uso enteros para identificarlos (0 es un textbox, 1 es un  combo, 2 es un checkbox, etc.)

     

    Una vez determinado, crearias una instancia de esa clase en un procedimiento

     

    System.Windows.Forms.TextBox dynatextbox;

     

    A continuación estableces sus propiedades y (imporante) si quieres poder manejarlo posteriormente, debes asignarle un nombre (diferente para cada copia) siempre.

     

    tomando tu propio ejemplo, en el que le sobra el "this", ya que lo creas al vuelo, y no pertenece a la instancia de tu formulario principal:

     

    System.Windows.Forms.Label label1 = new System.Windows.Forms.Label();

    label1.AutoSize = true;

    label1.Location = new System.Drawing.Point(12, 20);

    label1.Name = "label1";

    label1.Size = new System.Drawing.Size(186, 13);

    label1.TabIndex = 0;

    label1.Text = "Ingrese los Datos Del Item de la Clase";

     

    Una vez establecidas sus propiedades, debes pasarle el control a tu formulario destino.

    Puedes hacerlo de varias formas, pero yo te recomiendo usar un TableLayoutPanel, ya que de esa forma te evitaras el código y el cálculo de posiciones dentro del formulario destino, pues este control te lo mantendrá en filas y columnas (que puedes establecer una vez sepas la cantidad de controles a agregar).

     

    En definitiva, una vez tengas el control apunto, debes pasarselo a un contenedor de controles. Ejemplo:

     

    Form2 instanciaform2 = new form2();

    form2.Controls.Add(label1);

     

    o bien si has usado un control contenedor como comentaba:

     

    form2.tblPanel.Controls.Add(label1);

     

    A partir de ahí, tu control ya pertenece a la instancia de tu formulario 2, y se destruirá junto a este.

    Todo esto puedes mejorarlo mucho y extenderlo añadiendo por ejemplo en tu formulario 2 un manejador de eventos genérico por ejemplo para los cambios de contenido en los textbox que añadas posterioremente.

     

    Espero que sirva de ayuda, aunque como decia, tarde.

     

    Saludos-.

    miércoles, 10 de octubre de 2007 14:44