C sharp - Como identificar controles creados en runtime

 
Vista:
sin imagen de perfil
Val: 8
Ha aumentado su posición en 4 puestos en C sharp (en relación al último mes)
Gráfica de C sharp

Como identificar controles creados en runtime

Publicado por Lucas (4 intervenciones) el 13/01/2019 23:08:37
Hola, soy nuevo aquí y estoy aprendiendo C#.

He logrado crear controles en runtime. Más específicamente 4 TextBox y asignarles un método EventHandler al evento click de cada uno.
Mi pregunta es: ¿Cómo diferencio cada control cuando recibe el Click? No sé muy bien si lo tengo que hacer con el objeto "sender" ó System.EventArgs lo cuales son los parámetros del Evento.

Mi código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
private void FormAgenda_Load(object sender, EventArgs e)
{
    List<TextBox> lista = new List<TextBox>();
 
    int x = 50;
    int y = 50;
 
    for (int i = 0; i < 4; i++)
    {
        TextBox txt = new TextBox();
        txt.Name = string.Format("Name{0}", i);
        txt.Location = new Point(x, y);
        y += 50;
        txt.Click += new EventHandler(editText_Click);
        this.Controls.Add(txt);
 
        lista.Add(txt);
    }
}
 
private void editText_Click(object sender, System.EventArgs e)
{
    MessageBox.Show("Soy el Control: {0}");
}

Como verán FormAgenda_Load, se llama cuando el form es inicializado, crea los 4 TextBox usando un List en un bucle de 0 a 3.
¿Pero si creo 4 controles y hay un solo método que recibe su "Click", cómo los diferencio?

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 373
Plata
Ha aumentado su posición en 2 puestos en C sharp (en relación al último mes)
Gráfica de C sharp

Como identificar controles creados en runtime

Publicado por Agustin (171 intervenciones) el 14/01/2019 13:12:17
Para eso esta el sender:

1
2
3
4
5
private void editText_Click(object sender, System.EventArgs e)
{
    if (sender is TextBox textBox)
        MessageBox.Show($"Soy el Control: {textBox.Name}");
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 8
Ha aumentado su posición en 4 puestos en C sharp (en relación al último mes)
Gráfica de C sharp

Como identificar controles creados en runtime

Publicado por Lucas (4 intervenciones) el 14/01/2019 17:06:02
Gracias por la solución.

Encontré otra solución, para el que le sirva:

1
2
3
4
private void editText_Click(object sender, System.EventArgs e)
{
    TextBox txt = sender as TextBox;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar