control inactivo color de fondo
-
18-09-2019 - |
Pregunta
¿Hay alguna manera en Windows para recuperar el color que se utiliza como color de fondo para los controles inactivos (TextBox
, etc.)? O mejor aún, el color del borde también?
Esto es para Windows Forms y no he podido encontrar nada adecuado en SystemColors
. No hay tal cosa
El caso en cuestión. Tengo un cuadro de texto que puede no ser suficiente para que el texto se mantiene grande y está desactivado. Cuando se desactiva el usuario no puede desplazarse para ver el texto completo y ni siquiera puede mostrar una información sobre herramientas por razones obvias .
Así que lo que he hecho ahora está estableciendo la propiedad TextBox
del ReadOnly
a true
que me permite mostrar la información sobre herramientas y tienen el control de desplazamiento. El cliente ahora quiere que el cuadro de texto para que parezca que se ha desactivado; ReadOnly
es una propiedad bastante desagradable ya que todavía ve como puede ser editado. Así que pensé poner el color de fondo adecuada allí podría ser suficiente para engañar a la mayoría de los usuarios. No puedo utilizar un valor de gris arbitraria, ya que hay otros controles con discapacidad en ese formulario, así y probablemente se observaron diferencias de color. Entonces, ¿hay alguna manera de saber cómo un control deshabilitado se rindió? color de fondo y color del borde o por lo menos la primera debería ser suficiente aquí, pero prefiero no adivinar. Plataformas en cuestión son muy probablemente XP y Vista quizá tanto con o sin temas.
ETA: Indiferencia. La pregunta era estúpida y un error de mi parte que debería haber visto antes. Fue sólo un poco raro que un solo cuadro de texto no se adheriría a un fondo gris.
Solución
Cuando está desactivado, el cuadro de texto tiene SystemColors.Control
color de fondo y color de primer plano SystemColors.GrayText
.
Otros consejos
Prueba esto:
treeView1.EnabledChanged += (s, o) =>
{
treeView1.BackColor = treeView1.Enabled ? Color.White : SystemColors.Control;
};