Te paso el mismo control con una pequeña mejora.
Ahora, cuando cambias el BackColor mediante código, si el usuario tiene enfocado el textbox, no se cambia el color hasta que no quitas el foco.
Supongo que se podría hacer de mejor forma, pero...
Código C#:
Ver originalpublic partial class FocusTextBox : TextBox
{
public FocusTextBox()
{
InitializeComponent();
ColorNotFocus = BackColor;
GotFocus += (s, e) =>
{
this.BackColor = ColorOnFocus;
goingToFocus = true;
};
LostFocus += (s, e) =>
{
goingToFocus = false;
BackColor = ColorNotFocus;
};
}
private bool goingToFocus = false;
private Color _colorNotFocus;
public Color ColorNotFocus
{
get { return _colorNotFocus; }
set { _colorNotFocus = value; }
}
private Color _colorOnFocus = Color.Aqua;
public Color ColorOnFocus
{
get { return _colorOnFocus; }
set { _colorOnFocus = value; }
}
public override Color BackColor
{
get
{
return base.BackColor;
}
set
{
if (!goingToFocus)
{
base.BackColor = value;
if (!Focused)
ColorNotFocus = value;
}
else
{
ColorNotFocus = value;
}
}
}
}