Files
FullAutoWaterCheck/全自动水压检测仪/StatusSettingsForm.cs
2026-02-04 18:29:56 +08:00

466 lines
23 KiB
C#

using Sunny.UI;
using System;
using System.Diagnostics;
using System.Drawing;
using System.Windows.Forms;
namespace
{
/// <summary>
/// 状态设置弹窗 - 显示温度模式和阀门状态
/// </summary>
public partial class StatusSettingsForm : UIForm
{
private System.Windows.Forms.Timer _updateTimer;
private NormalTemperatureMode _parentForm;
public StatusSettingsForm(NormalTemperatureMode parentForm)
{
_parentForm = parentForm;
// 基本的 InitializeComponent 会在 Designer.cs 中调用
InitializeComponent();
// 设置窗体属性
this.Text = "状态监控设置";
this.Width = 900;
this.Height = 600;
this.StartPosition = FormStartPosition.CenterParent;
this.ShowInTaskbar = false;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.FormBorderStyle = FormBorderStyle.FixedDialog;
// 初始化更新定时器
_updateTimer = new System.Windows.Forms.Timer();
_updateTimer.Interval = 500; // 每500ms更新一次
_updateTimer.Tick += UpdateTimer_Tick;
this.FormClosing += StatusSettingsForm_FormClosing;
}
private void UpdateTimer_Tick(object sender, EventArgs e)
{
// 检查窗体状态
if (this.IsDisposed || !this.IsHandleCreated)
{
return;
}
try
{
UpdateStatusDisplay();
}
catch (Exception ex)
{
Debug.WriteLine($"更新状态显示失败: {ex.Message}");
}
}
private void UpdateStatusDisplay()
{
if (_parentForm == null || _parentForm.IsDisposed)
return;
// 从父窗体获取状态并更新
_parentForm.UpdateStatusSettingsForm(this);
}
// 公共方法供父窗体调用更新状态
public void UpdateTempModeStatus(UILightState light1State, UILightState light2State, string modeText)
{
if (this.InvokeRequired)
{
this.Invoke(new Action(() => UpdateTempModeStatus(light1State, light2State, modeText)));
return;
}
if (uiLight1_Status != null) uiLight1_Status.State = light1State;
if (uiLight2_Status != null) uiLight2_Status.State = light2State;
if (uiLabel11_Status != null) uiLabel11_Status.Text = modeText;
}
public void UpdateValveStatus(
UILightState light3, UILightState light4, UILightState light5,
UILightState light6, UILightState light7, UILightState light8,
UILightState light9, UILightState light10, UILightState light11, UILightState light12)
{
if (this.InvokeRequired)
{
this.Invoke(new Action(() => UpdateValveStatus(light3, light4, light5, light6, light7, light8, light9, light10, light11, light12)));
return;
}
if (uiLight3_Status != null) uiLight3_Status.State = light3;
if (uiLight4_Status != null) uiLight4_Status.State = light4;
if (uiLight5_Status != null) uiLight5_Status.State = light5;
if (uiLight6_Status != null) uiLight6_Status.State = light6;
if (uiLight7_Status != null) uiLight7_Status.State = light7;
if (uiLight8_Status != null) uiLight8_Status.State = light8;
if (uiLight9_Status != null) uiLight9_Status.State = light9;
if (uiLight10_Status != null) uiLight10_Status.State = light10;
if (uiLight11_Status != null) uiLight11_Status.State = light11;
if (uiLight12_Status != null) uiLight12_Status.State = light12;
}
private void StatusSettingsForm_Load(object sender, EventArgs e)
{
// 初始化所有控件
InitializeControls();
// 启动定时器
_updateTimer?.Start();
// 初始更新
UpdateStatusDisplay();
}
private void StatusSettingsForm_FormClosing(object sender, FormClosingEventArgs e)
{
try
{
if (_updateTimer != null)
{
_updateTimer.Stop();
_updateTimer.Tick -= UpdateTimer_Tick;
_updateTimer.Dispose();
_updateTimer = null;
}
}
catch (Exception ex)
{
Debug.WriteLine($"释放定时器资源失败: {ex.Message}");
}
}
private void uiButton_Close_Click(object sender, EventArgs e)
{
this.Close();
}
private void InitializeControls()
{
this.mainPanel = new Sunny.UI.UIPanel();
this.tempModePanel = new Sunny.UI.UIPanel();
this.valveStatusPanel = new Sunny.UI.UIPanel();
this.uiLight1_Status = new Sunny.UI.UILight();
this.uiLight2_Status = new Sunny.UI.UILight();
this.uiLight3_Status = new Sunny.UI.UILight();
this.uiLight4_Status = new Sunny.UI.UILight();
this.uiLight5_Status = new Sunny.UI.UILight();
this.uiLight6_Status = new Sunny.UI.UILight();
this.uiLight7_Status = new Sunny.UI.UILight();
this.uiLight8_Status = new Sunny.UI.UILight();
this.uiLight9_Status = new Sunny.UI.UILight();
this.uiLight10_Status = new Sunny.UI.UILight();
this.uiLight11_Status = new Sunny.UI.UILight();
this.uiLight12_Status = new Sunny.UI.UILight();
this.uiLabel11_Status = new Sunny.UI.UILabel();
this.uiButton_Close = new Sunny.UI.UIButton();
this.SuspendLayout();
this.mainPanel.SuspendLayout();
// mainPanel
this.mainPanel.Dock = System.Windows.Forms.DockStyle.Fill;
this.mainPanel.Location = new System.Drawing.Point(0, 35);
this.mainPanel.Name = "mainPanel";
this.mainPanel.Size = new System.Drawing.Size(900, 565);
this.mainPanel.TabIndex = 0;
this.mainPanel.FillColor = System.Drawing.Color.FromArgb(243, 249, 255);
this.mainPanel.RectColor = System.Drawing.Color.FromArgb(243, 249, 255);
// tempModePanel
this.tempModePanel.Location = new System.Drawing.Point(30, 20);
this.tempModePanel.Size = new System.Drawing.Size(840, 140);
this.tempModePanel.FillColor = System.Drawing.Color.White;
this.tempModePanel.RectColor = System.Drawing.Color.FromArgb(220, 220, 220);
this.tempModePanel.Radius = 10;
this.tempModePanel.Name = "tempModePanel";
this.tempModePanel.TabIndex = 0;
// 温度模式标题
var tempModeTitle = new Sunny.UI.UILabel();
tempModeTitle.Location = new System.Drawing.Point(20, 15);
tempModeTitle.Size = new System.Drawing.Size(200, 30);
tempModeTitle.Text = "温度模式状态";
tempModeTitle.Font = new System.Drawing.Font("微软雅黑", 14F, System.Drawing.FontStyle.Bold);
tempModeTitle.ForeColor = System.Drawing.Color.FromArgb(48, 48, 48);
this.tempModePanel.Controls.Add(tempModeTitle);
// 常温模式指示
var normalTempLabel = new Sunny.UI.UILabel();
normalTempLabel.Location = new System.Drawing.Point(80, 65);
normalTempLabel.Size = new System.Drawing.Size(120, 30);
normalTempLabel.Text = "常温模式";
normalTempLabel.Font = new System.Drawing.Font("微软雅黑", 12F);
normalTempLabel.ForeColor = System.Drawing.Color.FromArgb(48, 48, 48);
normalTempLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.tempModePanel.Controls.Add(normalTempLabel);
// uiLight1_Status
this.uiLight1_Status.Location = new System.Drawing.Point(40, 67);
this.uiLight1_Status.Size = new System.Drawing.Size(30, 30);
this.uiLight1_Status.OnColor = System.Drawing.Color.FromArgb(80, 160, 255);
this.uiLight1_Status.OffColor = System.Drawing.Color.FromArgb(200, 200, 200);
this.uiLight1_Status.Radius = 15;
this.uiLight1_Status.Name = "uiLight1_Status";
this.tempModePanel.Controls.Add(this.uiLight1_Status);
// 高温模式指示
var highTempLabel = new Sunny.UI.UILabel();
highTempLabel.Location = new System.Drawing.Point(330, 65);
highTempLabel.Size = new System.Drawing.Size(120, 30);
highTempLabel.Text = "高温模式";
highTempLabel.Font = new System.Drawing.Font("微软雅黑", 12F);
highTempLabel.ForeColor = System.Drawing.Color.FromArgb(48, 48, 48);
highTempLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.tempModePanel.Controls.Add(highTempLabel);
// uiLight2_Status
this.uiLight2_Status.Location = new System.Drawing.Point(290, 67);
this.uiLight2_Status.Size = new System.Drawing.Size(30, 30);
this.uiLight2_Status.OnColor = System.Drawing.Color.FromArgb(255, 80, 80);
this.uiLight2_Status.OffColor = System.Drawing.Color.FromArgb(200, 200, 200);
this.uiLight2_Status.Radius = 15;
this.uiLight2_Status.Name = "uiLight2_Status";
this.tempModePanel.Controls.Add(this.uiLight2_Status);
// 当前模式显示
//var currentModeLabel = new Sunny.UI.UILabel();
//currentModeLabel.Location = new System.Drawing.Point(520, 65);
//currentModeLabel.Size = new System.Drawing.Size(120, 30);
//currentModeLabel.Text = "当前模式:";
//currentModeLabel.Font = new System.Drawing.Font("微软雅黑", 11F);
//currentModeLabel.ForeColor = System.Drawing.Color.FromArgb(100, 100, 100);
//currentModeLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//this.tempModePanel.Controls.Add(currentModeLabel);
// uiLabel11_Status
this.uiLabel11_Status.Location = new System.Drawing.Point(640, 65);
this.uiLabel11_Status.Size = new System.Drawing.Size(150, 30);
this.uiLabel11_Status.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Bold);
this.uiLabel11_Status.ForeColor = System.Drawing.Color.FromArgb(80, 160, 255);
this.uiLabel11_Status.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.tempModePanel.Controls.Add(this.uiLabel11_Status);
// valveStatusPanel
this.valveStatusPanel.Location = new System.Drawing.Point(30, 180);
this.valveStatusPanel.Size = new System.Drawing.Size(840, 310);
this.valveStatusPanel.FillColor = System.Drawing.Color.White;
this.valveStatusPanel.RectColor = System.Drawing.Color.FromArgb(220, 220, 220);
this.valveStatusPanel.Radius = 10;
this.valveStatusPanel.Name = "valveStatusPanel";
this.valveStatusPanel.TabIndex = 1;
// 阀门状态标题
var valveStatusTitle = new Sunny.UI.UILabel();
valveStatusTitle.Location = new System.Drawing.Point(20, 15);
valveStatusTitle.Size = new System.Drawing.Size(200, 30);
valveStatusTitle.Text = "阀门状态监控";
valveStatusTitle.Font = new System.Drawing.Font("微软雅黑", 14F, System.Drawing.FontStyle.Bold);
valveStatusTitle.ForeColor = System.Drawing.Color.FromArgb(48, 48, 48);
this.valveStatusPanel.Controls.Add(valveStatusTitle);
// 阀门状态指示灯布局
int startX = 40;
int startY = 65;
int spacingX = 160;
int spacingY = 55;
// 第一行 - 高压出阀
this.uiLight3_Status.Location = new System.Drawing.Point(startX, startY);
this.uiLight3_Status.Size = new System.Drawing.Size(28, 28);
this.uiLight3_Status.OnColor = System.Drawing.Color.FromArgb(0, 190, 0);
this.uiLight3_Status.OffColor = System.Drawing.Color.FromArgb(200, 200, 200);
this.uiLight3_Status.Radius = 14;
this.valveStatusPanel.Controls.Add(this.uiLight3_Status);
var lbl3 = new Sunny.UI.UILabel();
lbl3.Location = new System.Drawing.Point(startX + 38, startY);
lbl3.Size = new System.Drawing.Size(115, 28);
lbl3.Text = "高压出阀";
lbl3.Font = new System.Drawing.Font("微软雅黑", 10F);
lbl3.ForeColor = System.Drawing.Color.FromArgb(60, 60, 60);
lbl3.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.valveStatusPanel.Controls.Add(lbl3);
// 高压进阀
this.uiLight4_Status.Location = new System.Drawing.Point(startX + spacingX, startY);
this.uiLight4_Status.Size = new System.Drawing.Size(28, 28);
this.uiLight4_Status.OnColor = System.Drawing.Color.FromArgb(0, 190, 0);
this.uiLight4_Status.OffColor = System.Drawing.Color.FromArgb(200, 200, 200);
this.uiLight4_Status.Radius = 14;
this.valveStatusPanel.Controls.Add(this.uiLight4_Status);
var lbl4 = new Sunny.UI.UILabel();
lbl4.Location = new System.Drawing.Point(startX + spacingX + 38, startY);
lbl4.Size = new System.Drawing.Size(115, 28);
lbl4.Text = "高压进阀";
lbl4.Font = new System.Drawing.Font("微软雅黑", 10F);
lbl4.ForeColor = System.Drawing.Color.FromArgb(60, 60, 60);
lbl4.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.valveStatusPanel.Controls.Add(lbl4);
// 常温抽水阀
this.uiLight5_Status.Location = new System.Drawing.Point(startX + spacingX * 2, startY);
this.uiLight5_Status.Size = new System.Drawing.Size(28, 28);
this.uiLight5_Status.OnColor = System.Drawing.Color.FromArgb(0, 190, 0);
this.uiLight5_Status.OffColor = System.Drawing.Color.FromArgb(200, 200, 200);
this.uiLight5_Status.Radius = 14;
this.valveStatusPanel.Controls.Add(this.uiLight5_Status);
var lbl5 = new Sunny.UI.UILabel();
lbl5.Location = new System.Drawing.Point(startX + spacingX * 2 + 38, startY);
lbl5.Size = new System.Drawing.Size(115, 28);
lbl5.Text = "常温抽水阀";
lbl5.Font = new System.Drawing.Font("微软雅黑", 10F);
lbl5.ForeColor = System.Drawing.Color.FromArgb(60, 60, 60);
lbl5.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.valveStatusPanel.Controls.Add(lbl5);
// 常温水箱加水阀
this.uiLight6_Status.Location = new System.Drawing.Point(startX + spacingX * 3, startY);
this.uiLight6_Status.Size = new System.Drawing.Size(28, 28);
this.uiLight6_Status.OnColor = System.Drawing.Color.FromArgb(0, 190, 0);
this.uiLight6_Status.OffColor = System.Drawing.Color.FromArgb(200, 200, 200);
this.uiLight6_Status.Radius = 14;
this.valveStatusPanel.Controls.Add(this.uiLight6_Status);
var lbl6 = new Sunny.UI.UILabel();
lbl6.Location = new System.Drawing.Point(startX + spacingX * 3 + 38, startY);
lbl6.Size = new System.Drawing.Size(115, 28);
lbl6.Text = "常温水箱加水阀";
lbl6.Font = new System.Drawing.Font("微软雅黑", 10F);
lbl6.ForeColor = System.Drawing.Color.FromArgb(60, 60, 60);
lbl6.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.valveStatusPanel.Controls.Add(lbl6);
// 高温抽水阀
this.uiLight7_Status.Location = new System.Drawing.Point(startX + spacingX * 4, startY);
this.uiLight7_Status.Size = new System.Drawing.Size(28, 28);
this.uiLight7_Status.OnColor = System.Drawing.Color.FromArgb(0, 190, 0);
this.uiLight7_Status.OffColor = System.Drawing.Color.FromArgb(200, 200, 200);
this.uiLight7_Status.Radius = 14;
this.valveStatusPanel.Controls.Add(this.uiLight7_Status);
var lbl7 = new Sunny.UI.UILabel();
lbl7.Location = new System.Drawing.Point(startX + spacingX * 4 + 38, startY);
lbl7.Size = new System.Drawing.Size(115, 28);
lbl7.Text = "高温抽水阀";
lbl7.Font = new System.Drawing.Font("微软雅黑", 10F);
lbl7.ForeColor = System.Drawing.Color.FromArgb(60, 60, 60);
lbl7.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.valveStatusPanel.Controls.Add(lbl7);
// 第二行 - 空气抽气阀
this.uiLight8_Status.Location = new System.Drawing.Point(startX, startY + spacingY);
this.uiLight8_Status.Size = new System.Drawing.Size(28, 28);
this.uiLight8_Status.OnColor = System.Drawing.Color.FromArgb(0, 190, 0);
this.uiLight8_Status.OffColor = System.Drawing.Color.FromArgb(200, 200, 200);
this.uiLight8_Status.Radius = 14;
this.valveStatusPanel.Controls.Add(this.uiLight8_Status);
var lbl8 = new Sunny.UI.UILabel();
lbl8.Location = new System.Drawing.Point(startX + 38, startY + spacingY);
lbl8.Size = new System.Drawing.Size(115, 28);
lbl8.Text = "空气抽气阀";
lbl8.Font = new System.Drawing.Font("微软雅黑", 10F);
lbl8.ForeColor = System.Drawing.Color.FromArgb(60, 60, 60);
lbl8.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.valveStatusPanel.Controls.Add(lbl8);
// 加热状态
this.uiLight9_Status.Location = new System.Drawing.Point(startX + spacingX, startY + spacingY);
this.uiLight9_Status.Size = new System.Drawing.Size(28, 28);
this.uiLight9_Status.OnColor = System.Drawing.Color.FromArgb(0, 190, 0);
this.uiLight9_Status.OffColor = System.Drawing.Color.FromArgb(200, 200, 200);
this.uiLight9_Status.Radius = 14;
this.valveStatusPanel.Controls.Add(this.uiLight9_Status);
var lbl9 = new Sunny.UI.UILabel();
lbl9.Location = new System.Drawing.Point(startX + spacingX + 38, startY + spacingY);
lbl9.Size = new System.Drawing.Size(115, 28);
lbl9.Text = "加热状态";
lbl9.Font = new System.Drawing.Font("微软雅黑", 10F);
lbl9.ForeColor = System.Drawing.Color.FromArgb(60, 60, 60);
lbl9.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.valveStatusPanel.Controls.Add(lbl9);
// 常温回水阀
this.uiLight10_Status.Location = new System.Drawing.Point(startX + spacingX * 2, startY + spacingY);
this.uiLight10_Status.Size = new System.Drawing.Size(28, 28);
this.uiLight10_Status.OnColor = System.Drawing.Color.FromArgb(0, 190, 0);
this.uiLight10_Status.OffColor = System.Drawing.Color.FromArgb(200, 200, 200);
this.uiLight10_Status.Radius = 14;
this.valveStatusPanel.Controls.Add(this.uiLight10_Status);
var lbl10 = new Sunny.UI.UILabel();
lbl10.Location = new System.Drawing.Point(startX + spacingX * 2 + 38, startY + spacingY);
lbl10.Size = new System.Drawing.Size(115, 28);
lbl10.Text = "常温回水阀";
lbl10.Font = new System.Drawing.Font("微软雅黑", 10F);
lbl10.ForeColor = System.Drawing.Color.FromArgb(60, 60, 60);
lbl10.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.valveStatusPanel.Controls.Add(lbl10);
// 高温水箱加水阀
this.uiLight11_Status.Location = new System.Drawing.Point(startX + spacingX * 3, startY + spacingY);
this.uiLight11_Status.Size = new System.Drawing.Size(28, 28);
this.uiLight11_Status.OnColor = System.Drawing.Color.FromArgb(0, 190, 0);
this.uiLight11_Status.OffColor = System.Drawing.Color.FromArgb(200, 200, 200);
this.uiLight11_Status.Radius = 14;
this.valveStatusPanel.Controls.Add(this.uiLight11_Status);
var lbl11 = new Sunny.UI.UILabel();
lbl11.Location = new System.Drawing.Point(startX + spacingX * 3 + 38, startY + spacingY);
lbl11.Size = new System.Drawing.Size(115, 28);
lbl11.Text = "高温水箱加水阀";
lbl11.Font = new System.Drawing.Font("微软雅黑", 10F);
lbl11.ForeColor = System.Drawing.Color.FromArgb(60, 60, 60);
lbl11.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.valveStatusPanel.Controls.Add(lbl11);
// 高温回水阀
this.uiLight12_Status.Location = new System.Drawing.Point(startX + spacingX * 4, startY + spacingY);
this.uiLight12_Status.Size = new System.Drawing.Size(28, 28);
this.uiLight12_Status.OnColor = System.Drawing.Color.FromArgb(0, 190, 0);
this.uiLight12_Status.OffColor = System.Drawing.Color.FromArgb(200, 200, 200);
this.uiLight12_Status.Radius = 14;
this.valveStatusPanel.Controls.Add(this.uiLight12_Status);
var lbl12 = new Sunny.UI.UILabel();
lbl12.Location = new System.Drawing.Point(startX + spacingX * 4 + 38, startY + spacingY);
lbl12.Size = new System.Drawing.Size(115, 28);
lbl12.Text = "高温回水阀";
lbl12.Font = new System.Drawing.Font("微软雅黑", 10F);
lbl12.ForeColor = System.Drawing.Color.FromArgb(60, 60, 60);
lbl12.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.valveStatusPanel.Controls.Add(lbl12);
// 关闭按钮
this.uiButton_Close.Location = new System.Drawing.Point(375, 510);
this.uiButton_Close.Size = new System.Drawing.Size(150, 42);
this.uiButton_Close.Text = "关闭";
this.uiButton_Close.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Bold);
this.uiButton_Close.FillColor = System.Drawing.Color.FromArgb(80, 160, 255);
this.uiButton_Close.FillHoverColor = System.Drawing.Color.FromArgb(100, 180, 255);
this.uiButton_Close.FillPressColor = System.Drawing.Color.FromArgb(60, 140, 235);
this.uiButton_Close.RectColor = System.Drawing.Color.FromArgb(80, 160, 255);
this.uiButton_Close.Radius = 20;
this.uiButton_Close.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiButton_Close.Click += new System.EventHandler(this.uiButton_Close_Click);
// 添加控件到主面板
this.mainPanel.Controls.Add(this.tempModePanel);
this.mainPanel.Controls.Add(this.valveStatusPanel);
this.mainPanel.Controls.Add(this.uiButton_Close);
this.Controls.Add(this.mainPanel);
this.mainPanel.ResumeLayout(false);
this.ResumeLayout(false);
}
}
}