【问题标题】:Red-Green light indicators in C# .NET FormC# .NET 表单中的红绿指示灯
【发布时间】:2009-12-17 17:33:14
【问题描述】:

在 C# 表单上显示红/绿指示灯的最快方法是什么?

我最初考虑使用单选按钮,但不知道如何设置点的颜色,只设置前景/背景文本。

然后我想画一个圆圈。找不到工具箱形状,也不想写代码来画圆。

基本上,我正在编写一个特定于应用程序的小型监视器,如果某些服务关闭或某些 Web 服务没有响应,它会显示红灯。

谢谢,

尼尔·沃尔特斯

到目前为止,我使用方形按钮而不是圆形按钮。代码正是我想要的,我只想要一个圆形。

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

【问题讨论】:

    标签: c# winforms


    【解决方案1】:

    这很简单,只需将System.Windows.Shapes 用于对象,System.Windows.Media.Brushes 用于颜色。

    对于一个圆圈,您可以执行以下操作:

    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;
    

    然后你可以创建一个函数来检查红色和绿色。

    此外,您也可以对颜色使用十六进制值:

    circle.Fill = new System.Windows.Media.SolidColorBrush((Color)ColorConverter.ConvertFromString("#RRGGBB"));
    

    【讨论】:

    • +1 作为唯一的答案,它提供了一种在没有固定图像的情况下如何做到这一点的方法。这在例如颜色来自设置文件。
    • 如果您正在构建 WinForms 应用程序,请不要忘记添加对 PresentationFrameworkPresentationCore 的引用。
    【解决方案2】:

    与手头的问题不完全相关,但您的代码可以使用三元运算符稍微缩短:

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

    但这一切都取决于您(或您的组织)对可读性和可维护性的定义。

    【讨论】:

    • 好点,我知道三元运算符,但通常忘记编码。
    【解决方案3】:

    我只需制作一个面板或PictureBox 并将背景图像设置为红/绿灯。要么在 PhotoShop/PaintShop/MS Paint 中制作图像,要么从网上下载一些库存图像。

    每当状态发生变化时,只需将图像换出即可。

    【讨论】:

      【解决方案4】:

      使用图像,但有一些很棒的图标可用here,所以你不必实际制作一些。

      【讨论】:

        【解决方案5】:

        创建红色和绿色位图并使用PictureBox 控件显示位图。

        【讨论】:

          【解决方案6】:

          我只是使用一些标准图像并将它们放在picturebox 中。在我们的应用上运行良好。

          【讨论】:

            【解决方案7】:

            试试这个对我有用。

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

            【讨论】:

            • 感谢您提供此代码 sn-p,它可能会提供一些即时帮助。一个正确的解释would greatly improve 其教育价值通过展示为什么这是一个很好的解决问题的方法,并将使它对未来有类似但不相同的问题的读者更有用。请edit您的答案添加解释,并说明适用的限制和假设。
            • 谢谢哥们,我正在寻找与您提供的非常相似的解决方案...
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-03-31
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多