# 状态监控设置弹窗实现说明 ## 需求概述 将NormalTemperatureMode页面顶部状态栏中的常温/高温模式指示和阀门状态展示区域,移动到一个新的设置弹窗中展示。 ## 实现方案 ### 1. 新建状态设置弹窗 (StatusSettingsForm) #### 文件结构 - `StatusSettingsForm.cs` - 窗体逻辑代码 - `StatusSettingsForm.Designer.cs` - 窗体UI设计代码 #### 主要功能 1. **温度模式显示区域** - 常温模式指示灯 (uiLight1_Status) - 蓝色 - 高温模式指示灯 (uiLight2_Status) - 红色 - 当前模式文本 (uiLabel11_Status) 2. **阀门状态显示区域** (10个阀门指示灯) - uiLight3_Status: 高压出阀 - uiLight4_Status: 高压进阀 - uiLight5_Status: 常温抽水阀 - uiLight6_Status: 常温水箱加水阀 - uiLight7_Status: 高温抽水阀 - uiLight8_Status: 空气抽气阀 - uiLight9_Status: 加热状态 - uiLight10_Status: 常温回水阀 - uiLight11_Status: 高温水箱加水阀 - uiLight12_Status: 高温回水阀 3. **实时更新机制** - 使用Timer每500ms从父窗体获取最新状态 - 通过父窗体的`UpdateStatusSettingsForm`方法获取控件状态 - 支持线程安全的UI更新 ### 2. 修改NormalTemperatureMode主窗体 #### 新增内容 1. **私有字段** ```csharp private StatusSettingsForm _statusSettingsForm; ``` 2. **公共更新方法** ```csharp public void UpdateStatusSettingsForm(StatusSettingsForm form) ``` - 从主窗体读取所有指示灯和标签的状态 - 调用StatusSettingsForm的更新方法传递状态 3. **打开窗体方法** ```csharp private void OpenStatusSettingsForm() ``` - 创建或激活StatusSettingsForm实例 - 实现单例模式,避免重复创建 4. **按钮事件修改** - 修改uiButton14的MouseUp事件 - 短按:打开状态设置窗体 - 长按(1秒以上):打开系数设置窗体 ### 3. 项目文件更新 在`全自动水压检测仪.csproj`中添加新文件引用: ```xml Form StatusSettingsForm.cs ``` ## 使用说明 ### 打开状态设置窗体 1. 在NormalTemperatureMode主界面 2. 短按隐藏按钮(uiButton14) 3. 弹出状态设置窗体 ### 窗体特性 - 窗体大小:850 x 550 像素 - 居中显示在父窗体上方 - 不显示在任务栏 - 实时更新状态(每500ms) - 点击"关闭"按钮关闭窗体 ## 技术要点 ### 1. 状态同步 - 使用Timer定时器实现自动更新 - 通过父窗体公共方法获取状态 - 线程安全的UI更新(使用Invoke) ### 2. 控件状态映射 ```csharp // 温度模式 uiLight1 (主窗体) → uiLight1_Status (设置窗体) uiLight2 (主窗体) → uiLight2_Status (设置窗体) uiLabel11 (主窗体) → uiLabel11_Status (设置窗体) // 阀门状态 uiLight3-12 (主窗体) → uiLight3-12_Status (设置窗体) ``` ### 3. 布局设计 - 温度模式区域:顶部,高度120px - 阀门状态区域:中部,高度280px,5列2行布局 - 关闭按钮:底部居中 ## 注意事项 1. **生产环境可用性** - 所有代码经过空值检查 - 异常处理完善 - 线程安全保证 2. **性能优化** - 定时器间隔500ms,平衡实时性和性能 - 窗体关闭时自动停止定时器 - 使用单例模式避免重复创建 3. **正确取值** - 直接从主窗体控件读取State属性 - 保证状态的准确性和实时性 4. **正确显示状态** - 指示灯颜色:绿色(开启)、灰色(关闭) - 温度模式:蓝色(常温)、红色(高温) - 文本标签清晰标注每个状态的含义 ## 测试建议 1. 测试窗体打开和关闭 2. 验证状态实时更新 3. 检查所有指示灯显示正确 4. 测试长按和短按按钮功能 5. 验证多次打开窗体的稳定性