Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
Gustavo Rangel

Manipulando Buttons

Recommended Posts

Gustavo Rangel

Boas pessoas,

Estou com uma dúvida para meu projecto, e é o seguinte:

Eu tenho 20 butões (em forma de matriz 4 x 5) e eu também tenho uma "bool matriz[4, 5]".

Daí em certo momento do projeto, eu gostaria para cada elemento "true" da matriz, no button correspondete a ele, seja escrito um texto, por exemplo: "PP";

Exemplo: Na minha variável matriz, após um certo tempo, haverá 4 elementos true, são eles: matriz[0,0], matriz[1, 3], matriz[2, 3] e matriz [2, 4].

Então, eu gostaria que fosse escrito "PP" nos butões de nomes: button0x0, button1x3, button2x3 e button2x4.

Existe algum meio mais simples de fazer isso do que usar 20 if's do tipo:

if (matriz[0, 0] == true)

    button0x0.Text = "PP";

?

Fui claro suficiente? Se alguém puder ajudar a melhorar meu projeto, eu agradeceria imensamente...

Abraços e boas programações

Share this post


Link to post
Share on other sites
softklin

Se percebi bem, a intenção é verificar a matriz de booleanos, e de acordo com a posição for true, alterar o botão correspondente. Não deixa de ser válido usar 20 ifs, mas deixo uma sugestão:

// por cada linha
for (int i = 0; i < 5; i++) {

  // por cada coluna
  for (int j = 0; j < 4; j++) {

    if (matrix[i][j]) {
      foreach (Control c in this.Controls) {
        if (c.Name == "button" + i + "x" + j) {
          // mudar o texto do botao
          c.Text = "PP";
          break;
        }
      }
    }
  }
}

A única vantagem que este código tem é que podes adicionar mais botões se for necessário e apenas alterar as dimensões (i e j). O problema, é que no pior caso, se a matriz estiver com tudo a true, o código vai fazer n * m * c iterações (n linhas, m colunas, c controlos no form), o que pode não ser propriamente amigo da performance. Não testei o código.


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.