• Lunes 18 de Noviembre de 2024, 04:33

Autor Tema:  crear textbox dinamicamente  (Leído 2173 veces)

picyo

  • Visitante
crear textbox dinamicamente
« en: Sábado 5 de Noviembre de 2011, 09:58 »
0
Bueno lo que quiero hacer ( he buscado aqui pero sin encontrar) es que  un método llame a otro método que  creará un TextBox, en el que el usuario escribirá un nombre ( cracion text box dinámico)

El hecho es que dentro de un menú, y al pulsar la opción "Añadir pais", quiero que se abra un textbox ,donde el usuario tecee el pais. Luego se añade al menu.Cada   vez que se pulsa "nuevo", se crea un nuevo ToolStripMenuItem. he hecho esto:
Código: [Seleccionar]
private void ElementoMenuPais_Click(object sender, EventArgs e)
        {
            ToolStripMenuItem elemento = (ToolStripMenuItem)sender;
            MessageBox.Show(elemento.Text);
            // se crea aqui para que solo muestre el pais al pulsar el pais ya creado.
        }



        private string paisTecleado(object sender, EventArgs e)         
        {
            TextBox teclear = new TextBox();
            string hola = "hola ";
            teclear.Text="Hola";
           
            return hola;
        }

        //Los paises se añadiran en tiempo de ejecución, no de diseño
        //1. Crear (añadir) el país.
        //2. Mandar informacion, desde elemento, al controlador click, por si se clika en el nuevo pais
        private void PaisAñadir_Click(object sender, EventArgs e)
        {
            //pasos  hechos depués de añadir simplemente
            if (menuPais.DropDownItems.Count ==3)
            {
                //añadir+barra separadora+eliminar= no hay paises)
                PaisEliminar.Visible = true;
                paisSeparador1.Visible = true;
            }
          //1. contruimos el nuevo menu pais. Lo ideal es que usuario teclee nuevo pais.De momento,no.
          // debemos poner un titulo primero
            string titulo;           
           
           
            // ahora quiero que usuario escriba el nombre del pais
            //cada vez que entre en este clcik,deberá crearlo con ese titulo sumando el numeral.Inicializamos string
            // al string titulo, inicializamos con "país" mas el sumatorio en 1 de la propiedad del objeto menuPais
            titulo = paisTecleado(sender, e) + (menuPais.DropDownItems.Count -2);

            //Se crea elemento para que sea añadido al click de elementoPais, creando evento en este click, no en el suyo

            ToolStripMenuItem elemento = new ToolStripMenuItem(titulo);//elemento adopta propieddes de titulo

            // este será controlador de eventos click, y que aparezca en menu, añadirlo
           elemento.Click += new EventHandler(ElementoMenuPais_Click);
            //se añade sobre el menu( la lista) el objeto elemento
            menuPais.DropDownItems.Add(elemento);
           
        }

 ElementoMenuPais_Click -> está hecho solo para que salga un TextBox al pulsar un pais ya creado.

paisTecleado -> es la que pretendo hacer, motivo de la pregunta

PaisAñadir_Click -> es el metodo donde se crea el pais. Pretendo que "paisñadir_Click" reciba el nombre del nuevo pais de " paisTecleado". Ahi me he hecho una prueba donde lo unico que hace paisTecleado es devolver un string


Este es un ejercicio que estoy haciendo de un libro de programación en VC#, pero en el ejercicio se queda como "pais1", "pais2"...hasta "pais N".Quiro modificarlo para que de forma dinamica, un usuario pueda escribir el pais que le venga en gusto

picyo

  • Visitante
Re:crear textbox dinamicamente
« Respuesta #1 en: Sábado 5 de Noviembre de 2011, 16:06 »
0
Bueno, era mas sencillo que todo. He comenzado a crear eventos y delegados...no....es tan simple como poner un textBox como variable "global" y crearla en el momento que se quiere del metodo en cuestion. Aun tiene un fallo, ya que al añadir pais, primero me abre la caja de texto y luego para añadir el pais he de volver a dar al mismo boton. 2 soluciones: o bien seria añadir/escribir/return ( y añade al formulario) o añadir una pestaña al menu.

Código: [Seleccionar]
public partial class Form1 : Form
    {
        TextBox textBoxDin = new TextBox();
        Label label1 = new Label();
        public Form1()

(...)
 private void ElementoMenuPais_Click(object sender, EventArgs e)
        {
            ToolStripMenuItem elemento = (ToolStripMenuItem)sender;
            MessageBox.Show(elemento.Text);
           
        }
       
        private void PaisAñadir_Click(object sender, EventArgs e)
        {
           
            if (menuPais.DropDownItems.Count ==3)
            {               
                PaisEliminar.Visible = true;
                paisSeparador1.Visible = true;
            }
           
           
           string titulo; 
           titulo = (menuPais.DropDownItems.Count - 2)+" " +  textBoxDin.Text ;
           ToolStripMenuItem elemento = new ToolStripMenuItem(titulo);
           elemento.Click += new EventHandler(ElementoMenuPais_Click);           
           menuPais.DropDownItems.Add(elemento);

           ///creardianmicamente un textbox y label
           ///

           //
           // label1
           //
           
           this.label1.AutoSize = false;
           this.label1.Location = new System.Drawing.Point(100, 60);
           this.label1.Name = "label1";
           this.label1.Size = new System.Drawing.Size(5, 5);           
           this.label1.Text = "añade país";
             
           //
           // textBoxDin
           //

           this.textBoxDin.Location = new System.Drawing.Point(100, 75);
           this.textBoxDin.Name = "textBoxDinamico";
           this.textBoxDin.Size = new System.Drawing.Size(100, 20);
           this.textBoxDin.TabIndex = 4;
           this.Controls.Add(this.textBoxDin);
        }



« última modificación: Sábado 5 de Noviembre de 2011, 17:02 por picyo »