Ver Mensaje Individual
  #3 (permalink)  
Antiguo 06/05/2012, 15:20
alexg88
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Es posible con herencia?

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 original
  1. public partial class FocusTextBox : TextBox
  2.     {
  3.         public FocusTextBox()
  4.         {
  5.             InitializeComponent();
  6.             ColorNotFocus = BackColor;
  7.             GotFocus += (s, e) =>
  8.             {
  9.                 this.BackColor = ColorOnFocus;
  10.                 goingToFocus = true;
  11.             };
  12.  
  13.             LostFocus += (s, e) =>
  14.             {
  15.                 goingToFocus = false;
  16.                 BackColor = ColorNotFocus;
  17.             };
  18.         }
  19.  
  20.         private bool goingToFocus = false;
  21.  
  22.         private Color _colorNotFocus;
  23.  
  24.         public Color ColorNotFocus
  25.         {
  26.             get { return _colorNotFocus; }
  27.             set { _colorNotFocus = value; }
  28.         }
  29.  
  30.         private Color _colorOnFocus = Color.Aqua;
  31.  
  32.         public Color ColorOnFocus
  33.         {
  34.             get { return _colorOnFocus; }
  35.             set { _colorOnFocus = value; }
  36.         }
  37.  
  38.         public override Color BackColor
  39.         {
  40.             get
  41.             {
  42.                 return base.BackColor;
  43.             }
  44.             set
  45.             {
  46.                 if (!goingToFocus)
  47.                 {
  48.                     base.BackColor = value;
  49.                     if (!Focused)
  50.                         ColorNotFocus = value;
  51.                 }
  52.                 else
  53.                 {
  54.                     ColorNotFocus = value;
  55.                 }
  56.             }
  57.         }
  58.        
  59.      }