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

samesdavis

[Resolvido] C# Delegate Enter e Leave

Mensagens Recomendadas

samesdavis    5
samesdavis

Olá pessoal,

Tenho um form com diversos controles do tipo ComboBox.

Estou querendo implementar esses dois eventos de foco em todos os controles ComboBox ( Enter e Leave )

        private void CboTP_pendencia_Enter(object sender, EventArgs e)
        {
            CboTP_pendencia.BackColor = Color.LightGoldenrodYellow;
        }

        private void CboTP_pendencia_Leave(object sender, EventArgs e)
        {
            CboTP_pendencia.BackColor = Color.White;
        }

Porém seria muito melhor fazer um For Each na TabControl e identificar se é ou não um Combobox e então aplicar um Delegate para gerar os dois eventos
para cada controle, porém eu não consegui montar, usei o Delegate apenas uma vez para eventos do tipo Validating, mas para esses dois eventos 
eu não achei nenhum exemplo de como montar.  Alguém pode me ajudar ?

 

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
nelsonr    334
nelsonr

Bom dia samdavis,

ainda bem que conseguiste resolver.

No entanto ajuda mais o forum e outros utilizadores que possam ter a mesma dúvida se colocasses aqui como resolveste.

 

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
samesdavis    5
samesdavis

Dentro do form eu criei o método abaixo para filtrar todos os campos quando forem TextBox ou combobox ( são vários campos, deixei apenas esses três aqui no exemplo )

            private void Delegate_Filtro(object sender, EventArgs e)
            {
                var cFiltro = new List<string>();
                if (TxtNomeColaboradorFiltro.Text != "")
                {
                cFiltro.Add(String.Format("DS_nomecompleto_User LIKE '%{0}%'", TxtNomeColaboradorFiltro.Text));
                }
                if (CboSetorFiltro.Text != "")
                {
                cFiltro.Add(String.Format("ID_SETOR = {0}", CboSetorFiltro.SelectedValue));
                }
                if (CboCargoFiltro.Text != "")
                {
                cFiltro.Add(String.Format("ID_CARGO = {0}", CboCargoFiltro.SelectedValue));
                }
                if (cFiltro.Count >= 1)
                {
                var queryFilter = String.Join(" AND ", cFiltro);
                bs.Filter = queryFilter;
                }
                else
                {
                bs.Filter = "";
                }
            }

Depois criei outro método para fazer um loop em todos os objetos textbox e combobox que estão dentro do grupo GrpFiltro

            private void Delegate()
            {
                string myvar = string.Empty;
                foreach (Control ctl in GrpFiltro.Controls)
                {
                    myvar = ctl.GetType().FullName;
                    if (myvar == "System.Windows.Forms.TextBox")
                    {
                        ((System.Windows.Forms.TextBox)ctl).TextChanged += new EventHandler(Delegate_Filtro);
                    }
                    else if (myvar == "System.Windows.Forms.ComboBox")
                    {
                        ((ComboBox)ctl).SelectionChangeCommitted += new EventHandler(Delegate_Filtro);
                    }
                }
            }

No construtor do form, abaixo do InitializeComponent, chamei o método, conforme abaixo:

            public FrmColaboradoresCad()
            {
                InitializeComponent();
				Delegate();
            }

Pronto!  resolvi desta forma.

 

 

Partilhar esta mensagem


Link 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 a nossa Política de Privacidade