Usuario
cargar conroles dinamicamente con un ciclo

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)
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 -
-
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.