C#保存ini文件--使用与遇到的问题

利用ini保存之前填写过的配置,下一次程序重启不需要再次重新配置,直接读取文件内保存过的数据即可。

连接PLC为例,使用hsl模拟plc来测试

编写下列程序,保存好plc配置后下一次参数会自动变为已保存的配置参数,并测试是否可以读写数据

保存数据 将文本内容赋值给对应plc的参数并将其保存ini文件中

        public void UpDataUI_PLC(bool bFromUI)
        {
            if (bFromUI)
            {
                m_Plc.m_Plctype = (PlcType)System.Enum.Parse(typeof(PlcType), cb_PlcType.Text);
                m_Plc.m_strIP = tb_PLC_IP.Text;
                m_Plc.m_nPort = Convert.ToInt32(tb_PLC_Port.Text);
            }
            else
            {
                cb_PlcType.SelectedIndex = Convert.ToInt32(m_Plc.m_Plctype);
                tb_PLC_IP.Text = m_Plc.m_strIP;
                tb_PLC_Port.Text = m_Plc.m_nPort.ToString();
            }
        }
        private void btn_Save_PLC_Click(object sender, EventArgs e)
        {
            UpDataUI_PLC(true);
            bool bRes = m_Plc.SaveParam();
            MessageBox.Show($"保存PLC数据{(bRes ? "成功" : "失败")}!");
        }

  public bool SaveParam()
        {
            IniHelper.Write(m_strName, "Type", m_SavePath, m_Plctype.ToString());
            IniHelper.Write(m_strName, "IP", m_SavePath, m_strIP);
            IniHelper.Write(m_strName, "Port", m_SavePath, m_nPort);
            return true;
        }

保存后下次调用

   //加载配置文件函数
 public bool LoadParam()
        {
            try
            {
                string strPlcType = "";
                IniHelper.ReadString(m_strName, "Type", m_SavePath, out strPlcType);
                m_Plctype = (PlcType)System.Enum.Parse(typeof(PlcType), strPlcType);

                IniHelper.ReadString(m_strName, "IP", m_SavePath, out m_strIP);
                IniHelper.ReadInt(m_strName, "Port", m_SavePath, out m_nPort);
            }
            catch (Exception)
            {
                return false;
            }

            return true;
        }

//在窗体加载时 判断配置文件中ip是否为空,不为空则
  private void Form1_Load(object sender, EventArgs e)
        {
         
             LoadParam()

              if (m_Plc.m_strIP!=null)
              {
                UpDataUI_PLC(false);
              }
        }
 
           

有关ini文件读取写入用到的代码

         string m_SavePath = AppDomain.CurrentDomain.BaseDirectory + "Config/Param.ini";
        //要判断当前文件是否存在,不然写入数据会出错
         if (!File.Exists(m_SavePath))
            {
                // 使用StreamWriter写入INI文件
                using (var file = File.Create(m_SavePath))
                {
                    // 文件已创建,但在这里我们不写入任何内容
                }
            }
//Inihelper写入 这是写入为string类型
     public static bool Write(string title, string name, string ini_path, string value)
        {
            long n = WritePrivateProfileString(title, name, value, ini_path);
            return n > 0;
        }
//其他类型要value.ToString()

//Inihelper读取 
  public static bool ReadString(string title, string name, string ini_path, out string strResult)
        {
            StringBuilder sb = new StringBuilder(255);
            int n = GetPrivateProfileString(title, name, "", sb, 255, ini_path);
            if (n > 0)
            {
                strResult = sb.ToString();
                return true;
            }
            else
            {
                strResult = "";
                return false;
            }
        }

再次打开参数会变成上次配置的数值显示出来,其他扫码枪等类似操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值