Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Gustavo Rangel

Manipulando Buttons

Mensagens Recomendadas

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.