none
Como fazer uma reserva de assento RRS feed

  • Pergunta

  • Estou tendo problemas ao tentar adicionar um evento click, vou mandar meu código e explicar o que preciso:

    public partial class Form1 : Form
        {
            Button[,] b = new Button[11, 4];
            public Form1()
            {
                InitializeComponent();
            }

            private void Form1_Load(object sender, EventArgs e)
            {
               
                int coluna = 0;
                int linha = 0;
                int cont = 1;
                for (int i = 0; i < 11; i++)
                {
                    for (int j = 0; j < 4; j++)
                    {
                        if (j == 1)
                        {
                            b[i, j] = new Button();
                            b[i, j].Name = " " + (cont);
                            b[i, j].Text = " " + (cont);
                            b[i, j].Location = new Point(coluna, linha);
                            Controls.Add(b[i, j]);
                            coluna += 150;

                        }
                        else
                        {
                            b[i, j] = new Button();
                            b[i, j].Name = " " + (cont);
                            b[i, j].Text = " " + (cont);
                            b[i, j].Location = new Point(coluna, linha);
                            Controls.Add(b[i, j]);
                            coluna += 90;
                        }
                       


                        cont += 1;

                    }

                    linha += 50;
                    coluna = 0;


                }

                

            }
        }

    Bom, o programa basicamente funciona criando 44 assentos em fila, como se fosse um onibus, porém o que queria acrescentar agora é uma reserva, por exemplo: ao clicar no button qualquer, pois fiz em matriz, gostaria que ele mudasse a cor para vermelho de reservado, ao clicar de novo gostaria de que voltasse para cor de origem. Vi que eu teria que usar o evento click, porém nao consigo achar tópicos explicando como usa-lo.


    • Editado Kaled azk terça-feira, 24 de abril de 2018 03:24
    terça-feira, 24 de abril de 2018 03:20

Respostas

  • Bom dia Kaled, beleza?

    Seguindo sua lógica, você deverá assinar o evento Click para cada controle do tipo botão. Neste caso, eu aproveitei para ajustar o código... Ficou assim:

    private void Form1_Load(object sender, EventArgs e)
    {
        int coluna = 0, linha = 0, cont = 1;
        for (int i = 0; i < 11; i++)
        {
            for (int j = 0; j < 4; j++)
            {
                b[i, j] = new Button();
                b[i, j].Click += Btn_Click;
                b[i, j].Name = b[i, j].Text = " " + (cont);
                b[i, j].Location = new Point(coluna, linha);
                Controls.Add(b[i, j]);
    
                if (j == 1) coluna += 150;
                else coluna += 90;
    
                cont++;
            }
    
            linha += 50;
            coluna = 0;
        }
    }
    
    void Btn_Click(object sender, EventArgs e)
    {
        if ((sender as Button).BackColor == Color.Red)
            (sender as Button).BackColor = SystemColors.Control;
        else (sender as Button).BackColor = Color.Red;
    }

    Espero ter ajudado!

    []'s

    terça-feira, 24 de abril de 2018 10:55