zoukankan      html  css  js  c++  java
  • 工控自定义winform控件:3色灯,支持DataBinding

     产线那个工位没有装3色报警灯,于是手撸了一个。

    using System.Drawing;
    using System.Drawing.Drawing2D;
    using System.Runtime.InteropServices;
    using System.Windows.Forms;
    
    namespace UNI.WinControls
    {
        public enum LED_Status
        {
            OK = 1,
            Error = 2,
            Warning = 3,
            Unknowing = 4
        }
    
        public class ThreeColorLED : Control
        {
            [DllImport("Kernel32.dll")]
            public static extern bool Beep(int frequency, int duration);
    
            public ThreeColorLED()
            {
                Width = 64;
                Height = 64;
                Status = LED_Status.Unknowing;
            }
    
            public LED_Status Status
            {
                get; set;
            }
    
            private string statusCode="0";
    
            public string StatusCode
            {
                get { return statusCode; }
                set 
                {
                    statusCode = value;
                    switch (value) 
                    {
                        case "1":
                            Status = LED_Status.OK;
                            break;
                        case "2":
                            Status = LED_Status.Error;
                            break;
                        case "3":
                            Status = LED_Status.Warning;
                            break;
                        default:
                            Status = LED_Status.Unknowing;
                            break;
                    }
                    this.Invalidate();
                }
            }
    
            protected override void OnPaint(PaintEventArgs e)
            {
                var color = Color.Transparent;
                switch (Status)
                {
                    case LED_Status.OK:
                        try
                        {
                            Beep(1888,1000);
                        }
                        catch  
                        {  
                        }
                        color = Color.Green;
                        break;
                    case LED_Status.Error:
                        color = Color.Red;
                        break;
                    case LED_Status.Warning:
                        color = Color.Yellow;
                        break;
                    default:
                        color = Color.Gray;
                        break;
                }
                e.Graphics.Clear(color);
                var b = new SolidBrush(color);
                Pen p = new Pen(new SolidBrush(color)); 
                Rectangle r = new Rectangle(0, 0, this.Width, this.Height);//标识圆的大小
                e.Graphics.DrawEllipse(p, r);
                e.Graphics.FillEllipse(b, r);
    
                GraphicsPath g = new GraphicsPath();
                g.AddEllipse(0, 0, Width, Height);
                this.Region = new Region(g);//这句就是设置圆形的规格区域的 
            }
        }
    }

    使用:

  • 相关阅读:
    Single Number 解答
    Minimum Size Subarray Sum 解答
    Valid Anagram 解答
    Count Primes 解答
    fullCalendar 日历显示每天数据调用方法实践
    jqGrid列的统计
    关于 asp.net Web Api 上传文件请求内容过大404错误记录
    My97DatePicker只显示月份
    js 宏微任务执行顺序
    git 等官网下载慢方法
  • 原文地址:https://www.cnblogs.com/datacool/p/12448787.html
Copyright © 2011-2022 走看看