2009-12-17 12 views
14

¿Cuál es la forma más rápida de mostrar un indicador de luz roja/verde en una forma C#?Indicadores de luz roja-verde en forma C# .NET

Originalmente pensé en usar botones de opción, pero no estoy seguro de cómo establecer el color del punto, solo el texto de fondo/fondo.

Luego pensé en dibujar un círculo. No pude encontrar una forma de caja de herramientas para eso, y no quería escribir código solo para dibujar el círculo.

Básicamente, estoy escribiendo un pequeño monitor específico de la aplicación, que muestra una luz roja si ciertos servicios están caídos, o ciertos servicios web no responden.

Gracias,

Neal Walters

Esto es lo que hasta ahora he usando un botón cuadrado en lugar de un círculo. El código es justo lo que quiero, solo quiero una forma redonda.

 if (allGood) 
     { 
      btnIISIndicator.BackColor = Color.Green; 
     } 
     else 
     { 
      btnIISIndicator.BackColor = Color.Red; 
     } 
+1

¡La idea que proporcionas en tu pregunta es exactamente lo que necesito! Gracias – VSZM

Respuesta

16

Hay algunos íconos y gráficos excelentes para este tipo de cosas ... Aquí hay un enlace here. Mucho más disponible gratis o por una pequeña carga.

+1

+1 por proporcionar un enlace real a las imágenes. – alastairs

+0

Como soy un codificador, no un dibujante de artistas, esto parece ser el mejor. Pensé que solía haber una "forma" o "círculo" en la caja de herramientas "en los viejos tiempos"? – NealWalters

+0

FYI - no tan simple como esperaba - Tengo que publicar otra pregunta para esto: {"No pude encontrar ningún recurso apropiado para la cultura especificada o la cultura neutral. Asegúrese de que \" Resource1.resources \ "esté incrustado correctamente o vinculado al ensamblado \ "TFBIC.RCT.Monitor \" en tiempo de compilación, o que todos los ensamblados de satélites requeridos son cargables y completamente firmados. "} – NealWalters

2

me acaba de hacer un panel o PictureBox y establecer la imagen de fondo a la de un semáforo en rojo/verde. Haga las imágenes en PhotoShop/PaintShop/MS Paint o descargue algunas imágenes de stock de la Web.

Siempre que el estado cambie, simplemente cambie la imagen.

1

Acabo de utilizar algunas imágenes estándar y ponerlas en un picturebox. Funciona muy bien en nuestras aplicaciones.

1

Crea mapas de bits rojos y verdes y usa el control PictureBox para mostrar los mapas de bits.

1

Usa una imagen, pero hay algunos iconos geniales disponibles here por lo que no tienes que hacer algunos.

2

No exactamente relacionada con la cuestión que nos ocupa, pero su código podría acortarse un poco con el operador ternario como tal:

btnIISIndicator.BackColor = allGood ? Color.Green : Color.Red; 

Pero todo depende de su (o su organización) definición de la legibilidad y mantenibilidad .

+0

Buen punto, conozco operador ternario, pero normalmente me olvido de codificarlo. – NealWalters

12

Esto es simple, solo use System.Windows.Shapes para el objeto y System.Windows.Media.Brushes para los colores.

Para un círculo que puede hacer lo siguiente:

System.Windows.Shapes.Ellipse circle = new System.Windows.Shapes.Ellipse(); 
circle.Height = 20; //or some size 
circle.Width = 20; //height and width is the same for a circle 
circle.Fill = System.Windows.Media.Brushes.Red; 

A continuación, se puede hacer una función para hacer su cheque para el rojo y el verde.

+2

+1 por ser la única respuesta que proporciona una forma de hacerlo sin imágenes fijas. Esto es especialmente útil si, por ejemplo, el color proviene de un archivo de configuración. –

0

simplemente intente esto, me funciona.

SolidColorBrush solidColor=new SolidColorBrush(); 
    solidColor.Color=Colors.Red; 
ellips_circle.Fill=solidColor; 
+1

Gracias por este fragmento de código, que puede brindar alguna ayuda inmediata. Una explicación adecuada [mejoraría en gran medida] (// meta.stackexchange.com/q/114762) su valor educativo al mostrar * por qué * esta es una buena solución al problema, y ​​lo haría más útil para lectores futuros con similares, pero no idénticas, preguntas. Por favor [edite] su respuesta para agregar una explicación y dar una indicación de qué limitaciones y suposiciones se aplican. –