C sharp - Generar controles en tiempo de ejecucion

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

Generar controles en tiempo de ejecucion

Publicado por Luis (2 intervenciones) el 27/11/2020 01:31:15
Hola comunidad tengo la siguente consulta:

Estoy Creando un sistema de reserva hotelera para mi clase de programacion c# y he encontrado un tutorial en youtube donde se crean una especie de botones o paneles dependiendo las habitaciones creadas en la base de datos con la informacion de la disponibilidad. Adjunto imagen
imagen-de-referencia

Enlace del canal: https://www.youtube.com/watch?v=o7xfoZ4JjIU
tomado el 26/11/2020

La idea es generar los botones automaticamente, pero de la forma que yo lo hago solo queda referenciado el ultimo objeto del boton que creo y el problema que se me presenta es que si presiono un boton para escoger una habitacion el evento que se me genera es del boton con el indice que se encuentra en el evento (button_Click) creado en el ciclo y yo quiero es escoger una habitacion cualquiera para reservarla o hacer cualquiera otra funcion. acepto sus sugerencias y ayudas, agredezco su colaboracoon

Este es mi codigo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Button[] buttons = new Button[100];
 
int y = 50;
int x = 50;
 
private void Generarbotones()
{
            for (int i = 0; i < 4; i++)
            {
                buttons[i] = new Button();
                buttons[i].Height = 150;
                buttons[i].Width = 300;
                buttons[i].Location = new Point(x, y);
                y += 180;
                buttons[i].Name = "GUARDAR" + i.ToString();
                buttons[i].Text = "TEXTO" + i.ToString();
                buttons[i].Click += new EventHandler(button_Click);
                Controls.Add(buttons[i]);
            }
}
private void button_Click(object sender,EventArgs e)
{
            MessageBox.Show(buttons[0].Text);
 }



abjunto imagen de como queda mi proyecto

imagen-de-referencia2
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: 158
Bronce
Ha mantenido su posición en C sharp (en relación al último mes)
Gráfica de C sharp

Generar controles en tiempo de ejecucion

Publicado por Yamil (1162 intervenciones) el 27/11/2020 02:50:26
Puedes usar el parametro sender para identificar cual boton desencadeno la opcion. Por ejemplo

1
2
3
4
5
6
7
8
private void button_Click(object sender,EventArgs e)
{
     button btn = (Button) sender;  // o quizas button btn =  sender as Button
     if  (btn..Name == "GUARDAR1")
     {
        ...
     }
}
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: 6
Ha aumentado su posición en 14 puestos en C sharp (en relación al último mes)
Gráfica de C sharp

Generar controles en tiempo de ejecucion

Publicado por Luis (2 intervenciones) el 28/11/2020 02:35:32
Muchas Gracias. Como no se me habia ocurrido antes debido a que estamos trabajando con los eventos sender es el mejor aliado
cuando se trata de botones.
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