none
cargar conroles dinamicamente con un ciclo RRS feed

  • Pregunta

  • buenas tardes como les va

    la duda que me asalta hoy es relacionada con la pregunta que hice ayer y a la cual le dieron una respuesta satisfactoria

    ya puedo crear controles dinamicamente y asignarle eventos a esos controles ahora quisiera saber como por medio de un ciclo ya sea FOR o DO

    puedo crear controles cada vez que le de click a un boton creado en tiempo de diseño asi:Tengo un formulario con dos botones creados en tiempo de diseño, el primero es mostrar. con este boton creo 3 controles en tiempo de ejecución que son: Un Panel y dentro del panel un textbox y otro boton que dice guardar, y el otro boton es agregar

    la idea es que con el segundo boton creado en tiempo de diseño o sea el boton agregar al darle click me cree dentro del panel otro textbox y otro boton guardar debajo de los creados con el boton mostrar y cada vez que le de click a agregar me cree los controles antes mencionados debajo de llos que previamente se crean todo esto dentro del panel

    espero que haya sido claro y muchas gracias de antemano buen dia que esten bien


    Ivan Mauricio Marin

    • Cambiado Enrique M. Montejo jueves, 26 de abril de 2012 14:05 controles de Windows Forms (De:Lenguaje VB.NET)
    martes, 24 de abril de 2012 16:16

Todas las respuestas

  • sea el boton agregar al darle click me cree dentro del panel otro textbox y otro boton guardar debajo de los creados con el boton mostrar

    define la variable del Panel por fuera de los metodos, entonces harias

    Private _panel As Panel

    Private Sub boton1_Click(..)

        _panel = New Panel

       'aqui creas los primeros controles

    End Sub

    Private Sub boton2_Click(..)

       Dim boton2 As New Button

       'propiedades

       _panel.Controls.Add(boton2)

    End Sub

    o sea si puede acceder al objeto puede agregar mas controles

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    martes, 24 de abril de 2012 18:07
  • gracias por la ayuda pero creo que no entendiste bien que es lo que quiero

    la idea es que con cada click del boton se creen nuevos controles (textbox, boton) uno debajo del otro dentro del pane

    gracias de nuevo


    Ivan Mauricio Marin

    martes, 24 de abril de 2012 19:04
  • Hola.

    Crear controles en tiempo de ejecucion no es que sea dificil, lo que si es algo "friki", ya que hay que escribir muchas lineas de codigo que el IDE te simplifica.... y porque digo esto, porque por cada control que crees una instancia debes de decirle con presicion todo lo que debe hacer como y donde debe dibujarse...... yo que ud. mejor usara UserControls y me simplifico la vida.

    De todas formas si le interesa aprender unas cuantas cosas (entre ellas la que pide) le recomiendo que le dedique 300 minutos a este VideoTutorial: Curso de Introduccion C# 2010

    No me canso de recomendarlo, ya que ahi estan las respuestas de las mayoria de las dudas, tanto en teoria como con ejemplos en videos, y quienes lo hacen no son nada mas y nada menos que Unai, El Guille y Jorge Serrano.

    PD: El material aplica desde Visual Studio 2005 hasta 2010.

    Edit: Mire el codigo que saque del IDE de la clase parcial de un Form luego de haberlo hecho en tiempo de diseño, con eso me evite escribir todo el codigo yo, a eso me referia. Con las instancias de los controles creadas el otro codigo lo puede poner en el evento Click de un boton y le crea un panel que contiene un TextBox y debajo un Button como ud. quiere ;).

    private System.Windows.Forms.Panel panel1 = new System.Windows.Forms.Panel();
    private System.Windows.Forms.TextBox textBox1 = new System.Windows.Forms.TextBox();
    private System.Windows.Forms.Button button1 = new System.Windows.Forms.Button();


    // 
    // panel1
    // 
    this.panel1.SuspendLayout();
    this.SuspendLayout();
    this.panel1.Controls.Add(this.textBox1);
    this.panel1.Controls.Add(this.button1);
    this.panel1.Location = new System.Drawing.Point(23, 29);
    this.panel1.Name = "panel1";
    this.panel1.Size = new System.Drawing.Size(167, 79);
    this.panel1.TabIndex = 0;
    // 
    // button1
    // 
    this.button1.Location = new System.Drawing.Point(4, 40);
    this.button1.Name = "button1";
    this.button1.Size = new System.Drawing.Size(75, 23);
    this.button1.TabIndex = 0;
    this.button1.Text = "Boton";
    this.button1.UseVisualStyleBackColor = true;
    //
    // textBox1
    // 
    this.textBox1.Location = new System.Drawing.Point(4, 14);
    this.textBox1.Name = "textBox1";
    this.textBox1.Size = new System.Drawing.Size(148, 20);
    this.textBox1.TabIndex = 1;

    this.Controls.Add(this.panel1);
    this.panel1.ResumeLayout(false);
    this.panel1.PerformLayout();
    this.ResumeLayout(false);

    Saludos.


    • Editado By AlaN jueves, 26 de abril de 2012 16:29 Add code.
    jueves, 26 de abril de 2012 16:18