MUDAR A COR DO CAMPO AO RECEBER O FOCO

 Tópico anterior Próximo tópico Novo tópico

MUDAR A COR DO CAMPO AO RECEBER O FOCO

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#495325 - 07/10/2020 10:23:04

NEGRON
ANDRADINA
Cadast. em:Agosto/2004


Última edição em 07/10/2020 10:25:28 por NEGRON

Bom dia Galera!!!!

Galera, to num dilema. tenho uma rotina que utilizo para mudar a cor do campo quando recebe o foco. Sempre utilizei e funcionou bem. mas hoje tive um problema.
Se eu coloco um GroupBox e dentro dele coloco os meus campos essa  função não funciona mais.
Já tentei, de varias formas. mas não deu certo. alguém de vocês poderiam me dar uma luz.
segue o código abaixo:

Public Sub pegoufoco(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Txtcodigo.GotFocus, TxtEndereco.GotFocus, Txtnome.GotFocus

        For Each cc In Controls
            If cc.focused Then
                If TypeOf cc Is TextBox Or TypeOf cc Is ComboBox Then
                    cc.backcolor = Color.Aquamarine
                End If
            Else
                If TypeOf cc Is TextBox Or TypeOf cc Is ComboBox Then
                    cc.backcolor = Color.White
                End If
            End If
        Next
    End Sub  


Funciona normalmente. mas quando coloca no GroupBox nao da certo

Desde já Agradeço a Todos


N3G4OW2005


#495327 - 07/10/2020 11:30:10

FABRICIOWEB
BELO HORIZONTE
Cadast. em:Novembro/2011


For Each txb As Object In GroupBox1.Controls
            If TypeOf txb Is TextBox Then
                TextBox1.BackColor= System.Drawing.Color.LightSalmon
                End If



#495330 - 07/10/2020 11:55:07

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Sugiro você fazer um componente customizado com esse comportamento. Assim, você não precisa ficar colocando código no form.


_______________________________________________________________________
Virei Orculo!
The end is nigh, be ready for the nukes!


#495331 - 07/10/2020 12:35:10

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Um exemplo:

class ExtendedTextbox:TextBox
    {
        #region Constructor
        public ExtendedTextbox()
        {
            this.GotFocus += ExtendedTextbox_GotFocus;
            this.LostFocus += ExtendedTextbox_LostFocus;
        }


        #endregion
        #region Event Handler Methods
        private void ExtendedTextbox_LostFocus(object sender, EventArgs e)
        {
            this.ForeColor = this.UnfocusColor;
        }

        private void ExtendedTextbox_GotFocus(object sender, EventArgs e)
        {

            this.ForeColor = this.FocusColor;
        }

        #endregion
        #region User Defined Properties

        [Browsable(true)]
        [Category('Extended Properties')]
        [Description('Sets color on focus')]
        [DisplayName('Focus Color')]
        public Color FocusColor { get; set; }

        [Browsable(true)]
        [Category('Extended Properties')]
        [Description('Sets color on lost of ofcus')]
        [DisplayName('Unfocus Color')]
        public Color UnfocusColor { get; set; }
        #endregion

    }


Namespaces necessários:

using System;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;


Crie uma classe, coloque esse conteúdo dentro, salve o projeto e compile.
Vai aparecer na sua caixa de ferramentas um novo grupo, chamado '<nome do seu projeto> components'
Dentro dele, vai ter um componente chamado 'ExtendedTextbox'
Arraste ele para dentro de um form e coloque as cores que quiser para foco e fora de foco
Rode e sorria


_______________________________________________________________________
Virei Orculo!
The end is nigh, be ready for the nukes!


#495332 - 07/10/2020 12:36:44

FABRICIOWEB
BELO HORIZONTE
Cadast. em:Novembro/2011


Citação:
:
Um exemplo:

class ExtendedTextbox:TextBox
    {
        #region Constructor
        public ExtendedTextbox()
        {
            this.GotFocus += ExtendedTextbox_GotFocus;
            this.LostFocus += ExtendedTextbox_LostFocus;
        }


        #endregion
        #region Event Handler Methods
        private void ExtendedTextbox_LostFocus(object sender, EventArgs e)
        {
            this.ForeColor = this.UnfocusColor;
        }

        private void ExtendedTextbox_GotFocus(object sender, EventArgs e)
        {

            this.ForeColor = this.FocusColor;
        }

        #endregion
        #region User Defined Properties

        [Browsable(true)]
        [Category('Extended Properties')]
        [Description('Sets color on focus')]
        [DisplayName('Focus Color')]
        public Color FocusColor { get; set; }

        [Browsable(true)]
        [Category('Extended Properties')]
        [Description('Sets color on lost of ofcus')]
        [DisplayName('Unfocus Color')]
        public Color UnfocusColor { get; set; }
        #endregion

    }


Namespaces necessários:

using System;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;


Crie uma classe, coloque esse conteúdo dentro, salve o projeto e compile.
Vai aparecer na sua caixa de ferramentas um novo grupo, chamado '<nome do seu projeto> components'
Dentro dele, vai ter um componente chamado 'ExtendedTextbox'
Arraste ele para dentro de um form e coloque as cores que quiser para foco e fora de foco
Rode e sorria


topzeira




#495333 - 07/10/2020 12:37:19

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Agora, você tem um controle personalizado bem simples que herda de textbox. Toda e qualquer função que você faça com textbox e é comum para tudo, basta colocar nesse controle. Ele estará disponível para todos os forms.


_______________________________________________________________________
Virei Orculo!
The end is nigh, be ready for the nukes!


Resposta escolhida #495334 - 07/10/2020 12:40:30

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Entendam que isso pode ser feito para QUALQUER CONTROLE. Funcionalidades que vocês querem comuns em controles, crie um customizado como esse e use esse controle customizado onde quer que queira essas funcionalidades.
Sim, pode ser um DataGridView
Sim, pode ser um DatePicker
Sim, pode ser um Button
Qualquer coisa.

_______________________________________________________________________
Virei Orculo!
The end is nigh, be ready for the nukes!


#495335 - 07/10/2020 12:43:27

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
E sim, isso vai resolver seu problema. Você pode colocar esse controle personalizado em qualquer container(quantos niveis quiser, container dentro de container, dentro de container...) que a funcionalidade de mudar de cor vai rolar normal.

_______________________________________________________________________
Virei Orculo!
The end is nigh, be ready for the nukes!


#495336 - 07/10/2020 12:47:36

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe

Última edição em 07/10/2020 12:54:59 por KERPLUNK

E o ideal mesmo, é criar esses controles numa DLL separada e referenciar no seu projeto. Afinal, você pode criar vários controles customizados e alterar eles nessa DLL sem precisar alterar o seu projeto.
No mínimo, criar uma pasta no projeto principal para colocar esses controle dentro.

_______________________________________________________________________
Virei Orculo!
The end is nigh, be ready for the nukes!


 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por NEGRON em 08/10/2020 10:10:34