2009-04-17 11 views
13

El comportamiento predeterminado de la propiedad BackColor de TextBox es el siguiente: cuando está habilitado, es White (SystemColors.Window), cuando está deshabilitado es gris (no estoy seguro de qué color de sistema es).¿Cómo puedo restablecer una propiedad .NET de Windows Forms TextBox BackColor?

Si cambio la propiedad BackColor, se usa el mismo color para Habilitado y Deshabilitado. ¿Cómo reinicio la propiedad BackColor (después de haber sido modificada previamente) para que el comportamiento revierte al valor predeterminado?

He intentado volver a establecerlo en SystemColors.Window, pero luego la caja permanece blanca cuando está deshabilitada.

Respuesta

27

Si se refiere al diseñador, puede hacer clic en la propiedad BackColor y eliminar lo que esté allí y luego presionar enter. Esto restablecerá la propiedad a su valor predeterminado.

Si quiere decir en código, puede establecer la propiedad BackColor en Color.Empty, y esto tendrá el mismo efecto.

+1

¡Funciona con encanto, gracias! –

1

En caso de que no haya forma de restablecer el control, volverá a cambiar automáticamente su color de fondo cuando esté habilitado/deshabilitado. Recomendaría utilizar el evento UIElement.IsEnabledChanged para establecer los colores de fondo deseados. ¡Espero que esto sea útil!

+0

Creo que su respuesta puede estar hablando al usar WPF. Su pregunta está dirigida a winforms (basados ​​en las etiquetas) – dustyburwell

+0

+1 Gracias Adam, eso es más o menos lo que estaba haciendo, fui con otra solución publicada aquí, ya que es muy probable que funcione en esquemas de color no estándar. –

1

SystemColors.Window es (generalmente) blanco. Use SystemColors.Control.

Podría, por supuesto, almacenar en caché el color en uso cuando lo configuró, y luego usarlo para restablecerlo. Al final, sin embargo, cualquiera de los enfoques funcionará.

+0

Caché del color siempre es una buena idea :) para que pueda devolverlo a su estado anterior. Aunque es una solución difícil cuando se dice, girando entre 5 o 6 colores. – kralco626

3
TextBox.ResetBackColor() 

No pop-up en IntelliSense por alguna razón, pero está ahí y se compila.

+1

Probablemente evitaría esto, ya que las funciones "Reset [PropertyName]" son parte del marco de serialización. A menos que haya una razón convincente, evitaría usar funciones que están intencionalmente excluidas de Intellisense. –

+0

+1 para esto, fui con la solución de @ ascalonx, aunque por la razón @Adam Robinson mencionó (Al menos su solución funcionó, no estoy seguro de qué drogas usa Adam);) –

Cuestiones relacionadas