quarta-feira, 3 de setembro de 2008
Mudar a cor do campo quando recebe o foco (C# Windows Forms)
Seguindo a mesma linha da propriedade "AutoSelectTextOnFocus" que apresentei aqui tempos atrás, que seleciona o conteúdo de um campo quando ele recebe o foco, apresento agora o "HighlightControlOnFocus" que configura a cor de fundo de todos os campos editáveis em um formulário C# Windows Forms.
Para fazer isso basta adicionar a propriedade "HighlightControlOnFocus" ao formulário pai e configurá-lo nas janelas filhas:
/// Muda a cor de fundo de um campo (habilitado) quando ele está em foco
/// </summary>
private bool bolHighlightControlOnFocus = false;
[Category("Focus")]
[Description("Define se a cor de fundo de um campo é alterada sempre quando ele estiver em foco.")]
[DisplayName("HighlightControlOnFocus")]
public bool HighlightControlOnFocus
{
get { return bolHighlightControlOnFocus; }
set { bolHighlightControlOnFocus = value; }
}
{
if (sender is Control)
{
Control controle = (Control)sender;
if (controle.Enabled)
{
controle.BackColor = Color.LightYellow;
}
}
}
private void ConfiguraLeaveComponente(object sender, EventArgs e)
{
if (sender is Control)
{
Control controle = (Control)sender;
if (controle.Enabled)
{
controle.BackColor = Color.White;
}
}
}
private void ConfigurarFocoComponentes(Control controle)
{
// Configura o Enter e o Leave do componente
if ( (controle is MaskedTextBox) ||
(controle is ComboBox) ||
(controle is TextBox) ||
(controle is RichTextBox) ||
(controle is NumericUpDown))
{
controle.Enter += this.ConfiguraEnterComponente;
controle.Leave += this.ConfiguraLeaveComponente;
}
if (controle is DateTimeEdit)
{
controle.Validated += this.ConfiguraLeaveComponente;
}
if (controle is ComboBox)
{
ComboBox combo = (ComboBox)controle;
combo.DropDown += this.ConfiguraLeaveComponente;
}
// Chamada recursiva para configurar os controles filhos do item atual
foreach (Control controleFilho in controle.Controls)
{
this.ConfigurarFocoComponentes(controleFilho);
}
}
{
//...
//...
// Configura a cor de fundo dos campos que estão com o foco
if (this.HighlightControlOnFocus)
{
this.ConfigurarFocoComponentes(this);
}
//...
//...
}
Artigos Relacionados:
Para fazer isso basta adicionar a propriedade "HighlightControlOnFocus" ao formulário pai e configurá-lo nas janelas filhas:
- Criando a propriedade:
/// Muda a cor de fundo de um campo (habilitado) quando ele está em foco
/// </summary>
private bool bolHighlightControlOnFocus = false;
[Category("Focus")]
[Description("Define se a cor de fundo de um campo é alterada sempre quando ele estiver em foco.")]
[DisplayName("HighlightControlOnFocus")]
public bool HighlightControlOnFocus
{
get { return bolHighlightControlOnFocus; }
set { bolHighlightControlOnFocus = value; }
}
- Codificando a propriedade:
{
if (sender is Control)
{
Control controle = (Control)sender;
if (controle.Enabled)
{
controle.BackColor = Color.LightYellow;
}
}
}
private void ConfiguraLeaveComponente(object sender, EventArgs e)
{
if (sender is Control)
{
Control controle = (Control)sender;
if (controle.Enabled)
{
controle.BackColor = Color.White;
}
}
}
private void ConfigurarFocoComponentes(Control controle)
{
// Configura o Enter e o Leave do componente
if ( (controle is MaskedTextBox) ||
(controle is ComboBox) ||
(controle is TextBox) ||
(controle is RichTextBox) ||
(controle is NumericUpDown))
{
controle.Enter += this.ConfiguraEnterComponente;
controle.Leave += this.ConfiguraLeaveComponente;
}
if (controle is DateTimeEdit)
{
controle.Validated += this.ConfiguraLeaveComponente;
}
if (controle is ComboBox)
{
ComboBox combo = (ComboBox)controle;
combo.DropDown += this.ConfiguraLeaveComponente;
}
// Chamada recursiva para configurar os controles filhos do item atual
foreach (Control controleFilho in controle.Controls)
{
this.ConfigurarFocoComponentes(controleFilho);
}
}
- Iniciando a propriedade (Configurar o "Load" da janela pai):
{
//...
//...
// Configura a cor de fundo dos campos que estão com o foco
if (this.HighlightControlOnFocus)
{
this.ConfigurarFocoComponentes(this);
}
//...
//...
}
Artigos Relacionados:
Criando e configurando propriedades em C#
Selecionar conteúdo dos campos assim que estiverem com o Foco - C#
Marcadores: Como_Fazer, CSharp, Desenvolvimento, Dicas
Assinar Postagens [Atom]
Postar um comentário