Ir para conteúdo
Fórum Script Brasil
  • 0

Habilitar e Desabilitar botões do Form Principal através de uma classe


bruno_osprimosbh

Pergunta

Boa tarde caros do fórum, estou desenvolvendo um sistema de busca em c# com arquivos, trabalho de PA, para a faculdade valendo um bocado de pontos. Estou precisando do esclarecimento de uma dúvida simples

Criei uma classe, um novo documento chamado ClassHabiltaDesabilitaBotoes

Nesta classe criei dois métodos um para habilitar e outro para desabilitar os botões do form principal. Segue abaixo

=> ClassHabilitaDesabilitaBotoes

class ClassHabilitaDesabilitaBotoes
    {
        /// <summary>
        /// Objeto utilizado para ter acesso aos componetes
        /// do form pricipal, estancio o mesmo como null
        /// </summary>
        private frmPrincipal objFrmPrincipal = null;

        /// <summary>
        /// Construtora da classe, recebe como parâmetro o form Principal
        /// </summary>
        /// <param name="principal"></param>
        public ClassHabilitaDesabilitaBotoes(frmPrincipal principal)
        {
            this.objFrmPrincipal = principal;
        }

        /// <summary>
        /// Método para desabilitar componentes do form Principal
        /// </summary>
        public void DesabilitaBotoes()
        {
            objFrmPrincipal.btnVisualizarAruivos.Enabled = false;
            objFrmPrincipal.btnPesquisar.Enabled = false;
            objFrmPrincipal.groupBox5.Enabled = false;
            objFrmPrincipal.gboxOperadorLogico.Enabled = false;
            objFrmPrincipal.groupBox4.Enabled = false;
            objFrmPrincipal.gboxTermopesquisa.Enabled = false;
        }

        /// <summary>
        /// Método para habilitar componentes do form Principal
        /// </summary>
        public void HabilitaBotoes()
        {
            objFrmPrincipal.btnVisualizarAruivos.Enabled = true;
            objFrmPrincipal.groupBox5.Enabled = true;
            objFrmPrincipal.groupBox4.Enabled = true;

            if (objFrmPrincipal.btnVisualizarAruivos.Enabled == true)
            {
                objFrmPrincipal.btnPesquisar.Enabled = true;
                objFrmPrincipal.btnPesquisar.Enabled = true;
                objFrmPrincipal.gboxOperadorLogico.Enabled = true;
                objFrmPrincipal.gboxTermopesquisa.Enabled = true;
            }
        }
    }
Minha dúvida é como estanciar esta classe no meu form principal? Fiz de 2 formas e deu erro => FrmPrincipal // Estância da classe Metodos
/// <summary>
        /// Crio um objeto da Classe Habilita e Desabilita Botoes para poder utilizar 
        /// seus métodos
        /// </summary>
        ClassHabilitaDesabilitaBotoes objClassHabilitaDesabilitaBotoes = new ClassHabilitaDesabilitaBotoes();
consigo fazer a chamada normalmente da seguinte forma:
objClassHabilitaDesabilitaBotoes.DesabilitaBotoes();

Porém na construtora da minha classe eu passo meu parêmetro do tipo FrmPrincipal, logo a minha chamada ao metodo da classe da erro porque não forneci nenhum parametro para a construtora.

Como posso resolver isso???? Que paremetro posso passar na chamada do metodo??? tentei passar a FrmPricipal e não deu.... A outra forma que fiz foi estanciar o objHabilitaDesabilitaBotoes como null, sem sucesso também... Podem me ajudar????

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Bruno,

Vamos lá, para instanciar uma classe, pode ser feito da seguinte forma;

Após a linha

Public Partial Class
Você coloca: Nome_da_minha_classe NOVONOMECLASSE = new Nome_da_minha_classe(); para chamar os métodos no blocos de instrução faça o seguinte
private void btnOk_Click(object sender, EventArgs e)
{
  NONOMEDACLASSE.meuMétodo()
}
Agora se sua intenção é desabilitar os controles (botoes,labels,textbox, etc). Faça um método usando o 'foreach' percorrendo os controles, vou postar um exemplo.
public void Config(Control.ControlCollection controles)
        {
            foreach (Control ctrl in controles)
            {
                #region TextBox

                if (ctrl is TextBox)
                {
                    ctrl.Controls.Clear();
                    ctrl.Font = new System.Drawing.Font("Tahoma", 8F, System.Drawing.FontStyle.Regular);
                    ctrl.BackColor = System.Drawing.Color.White;
                    ctrl.ForeColor = System.Drawing.Color.Black;
                }
no caso, altere para
if (ctrl is TextBox)
                {
                    ctrl.Controls.Enable = true/false;
                    
                }
ai você chama
NOVONOMECLASSE.Config(Controls)

Abs.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...