Jump to content
samesdavis

[Resolvido] C# Delegate Enter e Leave

Recommended Posts

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 ?

 

Share this post


Link to post
Share on other sites
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.

 

Share this post


Link to post
Share on other sites
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.

 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.