工控自定义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);//这句就是设置圆形的规格区域的 } } }
使用:
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
"作者:" 数据酷软件工作室
"出处:" http://datacool.cnblogs.com
"专注于CMS(综合赋码系统),MES,WCS(智能仓储设备控制系统),WMS,商超,桑拿、餐饮、客房、足浴等行业收银系统的开发,15年+从业经验。因为专业,所以出色。"
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
"作者:" 数据酷软件工作室
"出处:" http://datacool.cnblogs.com
"专注于CMS(综合赋码系统),MES,WCS(智能仓储设备控制系统),WMS,商超,桑拿、餐饮、客房、足浴等行业收银系统的开发,15年+从业经验。因为专业,所以出色。"
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
分类:
程序设计
标签:
Winform自定义控件
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】博客园携手 AI 驱动开发工具商 Chat2DB 推出联合终身会员
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 为什么 .NET8线程池 容易引发线程饥饿
· golang自带的死锁检测并非银弹
· 如何做好软件架构师
· 记录一次线上服务OOM排查
· Linux实时系统Xenomai宕机问题的深度定位过程
· 2025年广告第一单,试试这款永久免费的开源BI工具
· o3 发布了,摔碎了码农的饭碗
· SQL优化的这15招,真香!
· [.NET] API网关选择:YARP还是Ocelot?
· 用 2025 年的工具,秒杀了 2022 年的题目。