C# WinForm 系统参数设置功能完整实现
在工业上位机、客户端工具开发中系统参数配置是必备基础功能。本文用一套完整可运行的代码带你实现 WinForm INI 配置文件的参数设置自动生成配置、读取加载、界面编辑、保存生效全程逻辑清晰、注释详细可直接落地项目。一、功能说明本案例实现一套标准的系统参数设置流程程序目录自动生成sysInfo.ini配置文件主窗体加载时自动读取配置点击按钮弹出参数设置窗口下拉框绑定枚举、文本框加载配置修改后写入配置文件重启 / 重新加载生效适用场景PLC 通信参数、系统自启、屏保 / 注销时间、设备参数等配置管理。二、核心准备1. 基础信息开发框架.NET Framework 4.5技术WinForm、INI 文件读写、窗体传参、枚举绑定关键类SysInfo参数实体、InfoService配置读写服务2. 系统参数实体类 SysInfo所有配置项统一用实体承载字符串类型必须给默认值否则不会写入 INI 文件。/// summary /// 系统参数实体 /// /summary public class SysInfo { // CPU 类型枚举 public xbd.s7netplus.CpuType CpuType { get; set; } // IP 地址【必须给默认值否则不生成节点】 public string IPAddress { get; set; } 127.0.0.1; // 机架号 public short Rack { get; set; } // 槽号 public short Slot { get; set; } // 开机自启 public bool AutoStart { get; set; } // 屏保时间 public int ScreenTime { get; set; } // 注销时间 public int LogoffTime { get; set; } }三、主窗体逻辑FrmMain1. 定义配置路径与全局对象public partial class FrmMain : Form { // 配置文件路径程序启动目录 private string sysInfoPath Application.StartupPath \\sysInfo.ini; // 全局系统参数 private SysInfo sysInfo; // 配置读写服务 private InfoService infoService new InfoService(); public FrmMain() { InitializeComponent(); } }2. 窗体加载 → 读取配置程序启动时自动读取文件不存在 / 格式错误则提示。private void FrmMain_Load(object sender, EventArgs e) { // 从 INI 读取系统配置 this.sysInfo infoService.GetSysInfoFromPath(sysInfoPath); // 读取失败 if (this.sysInfo null) { new FrmMsgNoAck(系统配置读取失败请检查 sysInfo.ini 是否存在, 系统配置) .ShowDialog(); return; } }3. 打开参数设置弹窗按钮命名btn_ParamSet点击弹出参数设置窗口并传递当前配置。private void btn_ParamSet_Click(object sender, EventArgs e) { // 传参参数实体、读写服务、配置路径 new FrmParamSet(this.sysInfo, this.infoService, this.sysInfoPath) .ShowDialog(); }四、参数设置窗体FrmParamSet1. 窗体构造函数接收参数public partial class FrmParamSet : Form { public SysInfo SysInfo { get; set; } public InfoService InfoService { get; set; } public string SysInfoPath { get; set; } /// summary /// 构造传参 /// /summary public FrmParamSet(SysInfo sysInfo, InfoService infoService, string sysInfoPath) { InitializeComponent(); this.SysInfo sysInfo; this.InfoService infoService; this.SysInfoPath sysInfoPath; } }2. 窗体加载 → 初始化与赋值枚举绑定下拉框读取已有配置并显示到界面private void FrmParamSet_Load(object sender, EventArgs e) { // 1. 绑定 CPU 类型枚举 this.cmb_CPUType.DataSource Enum.GetNames(typeof(xbd.s7netplus.CpuType)); // 2. 有配置则加载到界面 if (SysInfo ! null) { this.cmb_CPUType.SelectedItem SysInfo.CpuType.ToString(); this.txt_IPAddress.Text SysInfo.IPAddress; this.txt_Rack.Text SysInfo.Rack.ToString(); this.txt_Slot.Text SysInfo.Slot.ToString(); this.toggle_AutoStart.Checked SysInfo.AutoStart; this.txt_ScreenTime.Text SysInfo.ScreenTime.ToString(); thistxt_LogoffTime.Text SysInfo.LogoffTime.ToString(); } }3. 保存参数 → 写入 INI 文件按钮命名btn_PLCSet完成取值→转换→写入三步。private void btn_PLCSet_Click(object sender, EventArgs e) { try { // 为空则新建实体 if (this.SysInfo null) this.SysInfo new SysInfo(); // 界面值赋值给实体 this.SysInfo.IPAddress this.txt_IPAddress.Text.Trim(); this.SysInfo.CpuType (CpuType)Enum.Parse(typeof(CpuType), this.cmb_CPUType.Text.Trim(), true); this.SysInfo.Rack Convert.ToInt16(this.txt_Rack.Text.Trim()); this.SysInfo.Slot Convert.ToInt16(this.txt_Slot.Text.Trim()); this.SysInfo.AutoStart this.toggle_AutoStart.Checked; this.SysInfo.ScreenTime Convert.ToInt32(this.txt_ScreenTime.Text.Trim()); this.SysInfo.LogoffTime Convert.ToInt32(this.txt_LogoffTime.Text.Trim()); // 写入配置文件 bool result this.InfoService.SetSysInfoFromPath(this.SysInfo, this.SysInfoPath); if (result) { MessageBox.Show(参数保存成功, 提示); this.DialogResult DialogResult.OK; this.Close(); } else { new FrmMsgNoAck(参数写入失败, 通信参数).ShowDialog(); } } catch (Exception ex) { MessageBox.Show($保存失败{ex.Message}, 错误); } }五、关键问题解析必看1. 为什么 IP 地址不生成 / 不显示原因string类型默认为null不会写入 INI 文件。解决给属性设置默认值。public string IPAddress { get; set; } 127.0.0.1;2. 配置文件自动生成首次调用SetSysInfoFromPath时文件不存在会自动创建无需手动新建。3. 类型转换要点枚举 ↔ 字符串Enum.Parse数值类型Convert.ToInt16/ToInt32必须加try-catch防止输入非法值崩溃六、完整执行流程启动程序 → 加载FrmMain→ 读取sysInfo.ini无文件 → 自动生成读取失败 → 提示点击参数设置→ 弹窗加载当前配置修改参数 → 点击保存 → 写入 INI重启 / 重新加载 → 新配置生效
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2487431.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!