# DotNetIndustrialControls **Repository Path**: smallcore/dot-net-industrial-controls ## Basic Information - **Project Name**: DotNetIndustrialControls - **Description**: C# 实现工业级指示灯控件 - **Primary Language**: C# - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2026-01-15 - **Last Updated**: 2026-01-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: 自定义控件, 工控指示灯, 工业控件 ## README >声明:网络内容,仅供学习,尊重版权,侵权速删,歉意致谢! ## 前言 工业控制领域,指示灯是用于显示设备状态的重要元素。为了提升用户体验并满足多样化的需求,本文介绍了一种基于自定义`UserControl`实现的工控指示灯控件——`IndustrialLed`。 该控件不仅支持多种状态切换、颜色自定义,还提供了可选的闪烁效果,适用于不同的工控场景。 ## 工控指示灯的核心思路 工控指示灯的设计核心在于圆形显示、状态对应颜色以及可选的闪烁效果。 通过创建一个自定义的`UserControl`,我们实现了高度的复用性,允许根据需求定制状态、颜色、大小及是否启用闪烁效果。 ## 完整代码 ### 自定义工控指示灯控件(IndustrialLed.cs) ```cs using System; using System.Drawing; using System.Windows.Forms; using System.ComponentModel; namespace IndustrialControls { /// /// 自定义工控指示灯控件 /// 支持多状态切换、颜色自定义、闪烁效果 /// public partial class IndustrialLed : UserControl { #region 私有方法 /// /// 更新闪烁定时器状态 /// private void UpdateFlashTimer() { if (_enableFlash && (_currentStatus == LedStatus.Fault || _currentStatus == LedStatus.Warning)) { _flashTimer.Interval = FlashInterval; _flashTimer.Start(); } else { _flashTimer.Stop(); _isFlashVisible = true; // 停止闪烁时恢复显示 Invalidate(); } } /// /// 闪烁定时器触发事件 /// private void FlashTimer_Tick(object sender, EventArgs e) { _isFlashVisible = !_isFlashVisible; Invalidate(); // 重绘控件实现闪烁 } /// /// 根据当前状态获取对应颜色 /// private Color GetCurrentColor() { return _currentStatus switch { LedStatus.Running => _runningColor, LedStatus.Fault => _faultColor, LedStatus.Warning => _warningColor, LedStatus.Standby => _standbyColor, _ => _standbyColor }; } #endregion } } ``` ### 控件使用方法 1、添加控件到窗体:编译上述代码,在 Visual Studio 的"工具箱"中会自动出现`IndustrialLed`控件。拖拽此控件至 WinForms 窗体上,并调整其大小。 2、代码控制指示灯状态:通过简单的代码即可轻松控制指示灯的状态和属性,如: ```cs using System; using System.Windows.Forms; using IndustrialControls; namespace IndustrialLedDemo { public partial class FrmMain : Form { public FrmMain() { InitializeComponent(); } // 示例:切换到运行状态 private void btnRunning_Click(object sender, EventArgs e) { industrialLed1.CurrentStatus = IndustrialLed.LedStatus.Running; industrialLed1.EnableFlash = false; // 运行状态不闪烁 } // 示例:切换到故障状态(启用闪烁) private void btnFault_Click(object sender, EventArgs e) { industrialLed1.CurrentStatus = IndustrialLed.LedStatus.Fault; industrialLed1.EnableFlash = true; // 故障状态启用闪烁 industrialLed1.FlashInterval = 300; // 自定义闪烁间隔300ms } // 示例:切换到警告状态 private void btnWarning_Click(object sender, EventArgs e) { industrialLed1.CurrentStatus = IndustrialLed.LedStatus.Warning; industrialLed1.EnableFlash = true; } // 示例:切换到待机状态 private void btnStandby_Click(object sender, EventArgs e) { industrialLed1.CurrentStatus = IndustrialLed.LedStatus.Standby; industrialLed1.EnableFlash = false; } // 示例:自定义指示灯颜色 private void btnCustomColor_Click(object sender, EventArgs e) { industrialLed1.RunningColor = Color.Cyan; // 自定义运行状态为青色 industrialLed1.FaultColor = Color.Magenta; // 自定义故障状态为洋红 industrialLed1.CurrentStatus = IndustrialLed.LedStatus.Running; } } } ``` ### 关键特性说明 - 多状态支持:内置待机、运行、故障、警告四种状态,并支持扩展。 - 自定义颜色:每个状态的颜色均可通过属性面板或代码进行修改。 - 闪烁效果:仅对故障和警告状态提供可选的闪烁效果,且可以自定义闪烁间隔。 - 立体感设计:通过阴影和高光效果增强视觉质感。 - 高可复用性:作为`UserControl`,易于集成与复用。 ## 总结 本文介绍了一个实用的工控指示灯控件`IndustrialLed`的实现过程,展示了如何利用C#中的`UserControl`来构建具有高度自定义性的UI组件。通过这个控件,开发能够快速地为工控应用添加直观的状态指示功能。 ## 关键词 工控指示灯、自定义控件、UserControl、状态切换、颜色自定义、闪烁效果、立体感设计、高可复用性 ![输入图片说明](dotnet.jpg)