none
Sair de um metodo RRS feed

  • Pergunta

  • Olá Pessoal

    Tenho um método que percorre vários componentes do tipo Label contidos dentro de um Panel. Quando ele encontra a label com a propriedade Text igual a de uma variável especifica, ele altera a propriedade BackColor para Black e incrementa a variável i. Mas ele continua verificando mesmo que já encontrou. Como eu faço para quando o fluxo entra no iF , atendendo a condição string.Equals(label.Text, texto) ,ele incremente a variável i e saia do método foreach, retornando ao método for?

              for (int x = 0; x < recebeDezenas.Length; x++)
                {
                    texto = string.Format("[{0:00}]", recebeDezenas[i]);
                    //Percorre cada componente do tipo Label
                    foreach (Control label in this.pnl_PainelCartao.Controls)
                    {
                        //Compara se a propriedade Text do Label encontrado é igual ao número sorteado
                        if (string.Equals(label.Text, texto))
                        {
                            label.BackColor = Color.Black;
                            i++;
                            break;
                        }
                    }
                }
            }

    domingo, 14 de janeiro de 2018 18:35

Respostas

  • Paulo Sergio Carvalho você pode também criar uma variável para controlar o fluxo.

    Assim:

    bool encontrado=false;
    for (int x = 0; x < recebeDezenas.Length; x++)
    {
        texto = string.Format("[{0:00}]", recebeDezenas[i]);
        //Percorre cada componente do tipo Label
        foreach (Control label in this.pnl_PainelCartao.Controls)
        {
            //Compara se a propriedade Text do Label encontrado é igual ao número sorteado
            if (string.Equals(label.Text, texto))
            {
                label.BackColor = Color.Black;
                i++;
                encontrado = true;
                break;
            }
        }
        if(encontrado)
        {
            break;
        }
    }


    Dessa forma assim que o primeiro break for executar ele irá avaliar o segundo.

    Abraços!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    Rafael Almeida
    Microsoft Developer .NET
    Microsoft Certified Professional
    Development Leader at JAMSOFT Informática
    Email: ralms@ralms.net
    Blog -  GitHub  -  LinkedIn -  Twitter

    domingo, 14 de janeiro de 2018 19:01
  • Oi Rafael tudo bem?

    Fiz como sugeriu e a variável de controle "encontrado" jogou o fluxo para fora do FOR, interrompendo o laço. Então retirei a variável de controle, coloquei um break point no FOR para analisar o fluxo, e percebi que o break, que esta dentro do IF, interrompe o FOREACH e volta pro FOR como eu estava querendo.

    Obrigado pela sua ajuda

    Um grande abraço...

    quinta-feira, 18 de janeiro de 2018 01:21

Todas as Respostas

  • No lugar do break, coloca um return!

    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    Rafael Almeida
    Microsoft Developer .NET
    Microsoft Certified Professional
    Development Leader at JAMSOFT Informática
    Email: ralms@ralms.net
    Blog -  GitHub  -  LinkedIn -  Twitter

    domingo, 14 de janeiro de 2018 18:51
  • Paulo Sergio Carvalho você pode também criar uma variável para controlar o fluxo.

    Assim:

    bool encontrado=false;
    for (int x = 0; x < recebeDezenas.Length; x++)
    {
        texto = string.Format("[{0:00}]", recebeDezenas[i]);
        //Percorre cada componente do tipo Label
        foreach (Control label in this.pnl_PainelCartao.Controls)
        {
            //Compara se a propriedade Text do Label encontrado é igual ao número sorteado
            if (string.Equals(label.Text, texto))
            {
                label.BackColor = Color.Black;
                i++;
                encontrado = true;
                break;
            }
        }
        if(encontrado)
        {
            break;
        }
    }


    Dessa forma assim que o primeiro break for executar ele irá avaliar o segundo.

    Abraços!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    Rafael Almeida
    Microsoft Developer .NET
    Microsoft Certified Professional
    Development Leader at JAMSOFT Informática
    Email: ralms@ralms.net
    Blog -  GitHub  -  LinkedIn -  Twitter

    domingo, 14 de janeiro de 2018 19:01
  • Oi Rafael tudo bem?

    Fiz como sugeriu e a variável de controle "encontrado" jogou o fluxo para fora do FOR, interrompendo o laço. Então retirei a variável de controle, coloquei um break point no FOR para analisar o fluxo, e percebi que o break, que esta dentro do IF, interrompe o FOREACH e volta pro FOR como eu estava querendo.

    Obrigado pela sua ajuda

    Um grande abraço...

    quinta-feira, 18 de janeiro de 2018 01:21
  • Oi Rafael tudo bem?

    Fiz como sugeriu e a variável de controle "encontrado" jogou o fluxo para fora do FOR, interrompendo o laço. Então retirei a variável de controle, coloquei um break point no FOR para analisar o fluxo, e percebi que o break, que esta dentro do IF, interrompe o FOREACH e volta pro FOR como eu estava querendo.

    Obrigado pela sua ajuda

    Um grande abraço...


    quinta-feira, 18 de janeiro de 2018 01:23
  • Olá

    Daniel, tudo bem?

    O return não funcionou, pois ele joga o fluxo para fora do laço FOR

    o break de certinho

    Obrigado pela sua ajuda

    Um grande abraço

    quinta-feira, 18 de janeiro de 2018 01:29