none
Desabilitar - Habilitar todos os controles de um Form com container RRS feed

  • Pergunta

  • Olá..... Sou iniciante e estou com dúvidas para fazer uma coisa muito simples....
    Bom, o que eu quero é o seguinte...

    Eu possuo um Form e dentro deste Form há GroupBox com controles...
    Eu quero chamar uma rotina que desabilite ou habilite todos os controles incluindo os controles que está dentro do GruopBox.....
    Eu não quero desabilitar o GroupBox, pq alguns controles dentro do GroupBox ficarão habilitados, outros não......
    O que eu consigo é fazer esta operação nos controles do Form....

    Como eu consigo acessar cada componente do GroupBox?
    quarta-feira, 15 de outubro de 2008 23:27

Todas as Respostas

  • Kryos,

     

    Para desabilitar todos os controles do GroupBox faça:

     

    Code Snippet

    foreach (Control c in this.myGroupBox.Controls)

    {

    c.Enabled = false;

    }

     

     

    Para desabilitar todos os controles do form, excluindo os controles do tipo GroupBox, faça:

     

    Code Snippet

    private void btnDesabilitarTudo_Click(object sender, EventArgs e)

    {

    foreach(Control control in this.Controls)

    DisableControls(control);

    }

     

    private void DisableControls(Control c)

    {

    if (c.GetType() != typeof(GroupBox))

    c.Enabled = false;

     

    if (c.Controls.Count == 0)

    return;

     

    foreach (Control control in c.Controls)

    DisableControls(control);

    }

     

    Att.

     

    Ari

    quinta-feira, 16 de outubro de 2008 00:43
    Moderador
  • Kryos,

     

     

    Não sei se entendi muito bem sua dúvida, mas acredito que isso vá te ajudar!

     

     

    Code Snippet

    private void desabilitaTudoMenosTextBoxDentroDoGroup()

    {

    //Para cada controle no Form ativo

    foreach (Control c in Form1.ActiveForm.Controls)

    {

    //Se c for do tipo GroupBox

    if (c is GroupBox)

    {

    //Itero entre os controles do GroupBox

    //O cast de c para GroupBox ‚ v lido pois verifiquei antes

    foreach (Control g in ((GroupBox)c).Controls)

    {

    //Se g for um textBox deixo Enabled = true

    if (g is TextBox)

    {

    g.Enabled = true;

    }

    else

    {

    g.Enabled = false;

    }

    }

    }

    //Irei desabilitar todos os outros controles, sem excessÆo

    else

    {

    c.Enabled = false;

    }

    }

     

     

     

    Não entendi muito bem teu cenário ou a utilidade do que vc quer fazer... mas espero ter sido útil

     

     

    []'s

     

     

    Gerson Afonso Dias

    quinta-feira, 16 de outubro de 2008 01:17