none
Classe abstrata não funciona. RRS feed

  • Pergunta

  • Ola.

    Tenho  uma classe abstrata para habilitar e desabilitar campos e botões dos meus formulários.

    Tenho outra classe que herda a classe abstrata e seus métodos.

    No código do formulário crio um objeto da classe herdada da classe abstrata, porém o método de habilitar e desabilitar não funciona, o formulário inicia com os botões habilitados.

    Este formulário é filho de um mdi.

    Código da classe abstrata:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace SistemaOdontologico.View
    {
         public abstract class ConfiguracaoGUI
        {
            public abstract void HabilitarDesabilitarBotoes();
            public abstract void HabilitarDesabilitarCampos();
            public abstract void LimpaCampos();        
        }
    }

    Código da classe que herda a classe abstrata:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace SistemaOdontologico.View
    {
        public class ConfigGUIPaciente : ConfiguracaoGUI
        {
            frmPaciente FormularioPaciente = new frmPaciente();
    
            public override void HabilitarDesabilitarBotoes()
            {
                FormularioPaciente.btnIncluir.Enabled = true;
                FormularioPaciente.btnExcluir.Enabled = false;
                FormularioPaciente.btnEditar.Enabled = false;
                FormularioPaciente.btnSalvar.Enabled = false;
                FormularioPaciente.btnCancelar.Enabled = true;
            }
    
            public override void HabilitarDesabilitarCampos()
            {
                throw new NotImplementedException();
            }
    
            public override void LimpaCampos()
            {
                throw new NotImplementedException();
            }
        }
    }

    Código do formulário:

      private void frmPaciente_Load(object sender, EventArgs e)
    
            ConfigGUIPaciente ControlePaciente = new ConfigGUIPaciente();
    
                ControlePaciente.HabilitarDesabilitarBotoes();
            }
        }



    Programdor .Net iniciante.



    sábado, 28 de novembro de 2015 18:01

Respostas

  • Já encontrei uma solução. Deixarei aqui o código como exemplo caso alguém passe pelo mesmo problema que eu.

    Na classe abstrata modifiquei o metodo que habilita de desabilita botões passando um parametro:

    public abstract class ConfiguracaoGUI
        {
            public abstract void HabilitarDesabilitarBotoes(params Button[] botoes);
            public abstract void HabilitarDesabilitarCampos();
            public abstract void LimpaCampos();
        }


    Código na classe que herda a classe abstrata:

    public override void HabilitarDesabilitarBotoes(params Button[] botoes)
            {
                foreach(Button botao in botoes)
                {
                    botao.Enabled = false;
                }
            }

    Código no Form no evento Load:

    public static List<Button> botoes; 
    
    private void frmPaciente_Load(object sender, EventArgs e)
            {
                botoes = this.Controls.OfType<Button>().ToList<Button>();
                ConfigGUIPaciente ControlePaciente = new ConfigGUIPaciente();
                ControlePaciente.HabilitarDesabilitarBotoes(btnExcluir, btnEditar, btnSalvar);            
            }




    Programdor .Net iniciante.

    domingo, 29 de novembro de 2015 12:57