C# Winform 调用系统接口操作 INI 配置文件的代码

关于C# Winform调用系统接口操作INI配置文件的代码,下面是详细的攻略:

1. 什么是INI文件

INI文件是一种配置文件格式,全称叫做Initial file,是一种比较老式的配置文件格式。它的结构非常简单,通常包含了若干个节(section)和各个节下的键值对(key-value pair)。INI文件的格式如下:

[section1]
key1=value1
key2=value2

[section2]
key1=value1
key2=value2

INI文件格式的优点是比较简单易懂,缺点是没有像JSON或者XML这类格式那样的结构化嵌套,不够灵活。

2. C# Winform调用系统接口操作INI文件

在C# Winform中,调用系统接口来操作INI文件的方式主要有以下几种:

2.1 使用Kernel32.dll文件

[DllImport("kernel32")]
private static extern int GetPrivateProfileString(
    string section,
    string key,
    string def,
    StringBuilder retVal,
    int size,
    string filePath);

[DllImport("kernel32")]
private static extern long WritePrivateProfileString(
    string section,
    string key,
    string val,
    string filePath);

public string ReadIni(string sectionName, string keyName, string fileName)
{
    StringBuilder temp = new StringBuilder(1024);
    GetPrivateProfileString(sectionName, keyName, "", temp, 1024, fileName);
    return temp.ToString();
}

public bool WriteIni(string sectionName, string keyName, string keyValue, string path)
{
    try
    {
        WritePrivateProfileString(sectionName, keyName, keyValue, path);
        return true;
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.ToString());
        return false;
    }
}

2.2 使用System.Configuration.Ini配置文件

using System.Configuration;
using System.IO;

public string ReadIni(string section, string key, string defValue, string filePath)
{
    var fileMap = new ExeConfigurationFileMap()
    {
        ExeConfigFilename = filePath
    };
    Configuration config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
    string value = config.AppSettings.Settings[section + "." + key].Value;
    return value ?? defValue;
}

public void WriteIni(string section, string key, string value, string filePath)
{
    var fileMap = new ExeConfigurationFileMap()
    {
        ExeConfigFilename = filePath
    };
    Configuration config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
    config.AppSettings.Settings[section + "." + key].Value = value;
    config.Save(ConfigurationSaveMode.Modified);
}

2.3 使用Ini类库

using IniParser;
using IniParser.Model;

public string ReadIni(string sectionName, string keyName, string filePath)
{
    var parser = new FileIniDataParser();
    IniData data = parser.ReadFile(filePath);
    string value = data[sectionName][keyName];
    return value;
}

public void WriteIni(string sectionName, string keyName, string keyValue, string filePath)
{
    var parser = new FileIniDataParser();
    IniData data = parser.ReadFile(filePath);
    data[sectionName][keyName] = keyValue;
    parser.WriteFile(filePath, data);
}

3. 示例使用说明

以第二种方法为例,假如我们有一个配置文件config.ini,其内容如下:

[database]
host=127.0.0.1
port=3306
database=test_db
username=root
password=password

现在我们想要在Winform应用程序中读取并显示这些配置项的值,可以这样做:

string host = ReadIni("database", "host", "127.0.0.1", "config.ini");
string port = ReadIni("database", "port", "3306", "config.ini");
string database = ReadIni("database", "database", "test_db", "config.ini");
string username = ReadIni("database", "username", "root", "config.ini");
string password = ReadIni("database", "password", "password", "config.ini");

textBoxHost.Text = host;
textBoxPort.Text = port;
textBoxDatabase.Text = database;
textBoxUsername.Text = username;
textBoxPassword.Text = password;

当然,也可以通过Winform控件来让用户自己选择配置文件的路径,并读取相应的配置项:

private void buttonBrowse_Click(object sender, EventArgs e)
{
    openFileDialog1.InitialDirectory = Application.StartupPath;
    if (openFileDialog1.ShowDialog() == DialogResult.OK)
    {
        string path = openFileDialog1.FileName;
        textBoxFilePath.Text = path;

        string host = ReadIni("database", "host", "127.0.0.1", path);
        string port = ReadIni("database", "port", "3306", path);
        string database = ReadIni("database", "database", "test_db", path);
        string username = ReadIni("database", "username", "root", path);
        string password = ReadIni("database", "password", "password", path);

        textBoxHost.Text = host;
        textBoxPort.Text = port;
        textBoxDatabase.Text = database;
        textBoxUsername.Text = username;
        textBoxPassword.Text = password;
    }
}

以上就是C# Winform调用系统接口操作INI文件的完整攻略,包含了三种方式的代码示例和具体使用方法的说明。如果还有不明白的地方,欢迎继续提问。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# Winform 调用系统接口操作 INI 配置文件的代码 - Python技术站

(0)
上一篇 2023年6月7日
下一篇 2023年6月7日

相关文章

  • C#微信开发之接收 / 返回文本消息

    C#微信开发之接收/返回文本消息的完整攻略如下: 一、前置知识 C#编程基础知识 微信公众号开发基础知识 微信公众号注册和认证 二、准备工作 注册微信公众号,获取AppID和AppSecret。 部署Web服务器。 在微信公众号后台中配置服务器地址和Token。 三、搭建基础框架 新建C#项目,并添加NuGet包WeChatSDK。 编写入口函数,创建WeC…

    C# 2023年5月15日
    00
  • C#实现在应用程序间发送消息的方法示例

    以下是C#实现在应用程序间发送消息的方法示例的完整攻略: 1. 介绍 在日常的软件开发中,我们常常会遇到在应用程序之间进行数据交互的场景,例如不同的窗口之间进行通信、不同的进程之间进行消息传递等。而在C#中,要实现应用程序间的消息传递,可以通过使用Windows API来实现消息队列或是共享内存两种方式,也可以使用.NET Framework提供的一些类库来…

    C# 2023年6月7日
    00
  • C#贪吃蛇游戏实现分析

    C#贪吃蛇游戏实现分析 简介 贪吃蛇是一种经典的游戏,它简单而有趣,很适合拿来练习编程的基础功底。这篇文章主要介绍如何用C#来实现一个贪吃蛇游戏。 实现思路 数据结构 贪吃蛇游戏中的核心数据结构是“蛇”。一条蛇由若干个“节点”组成,每个节点表示蛇身的一部分。为了表示一个蛇,我们可以使用一个“链表”来存储这些节点。 除此之外,还需要记录蛇的方向、蛇的长度以及食…

    C# 2023年6月6日
    00
  • 使用VSCode开发和调试.NET Core程序的方法

    使用VSCode开发和调试.NET Core程序的方法 在本攻略中,我们将详细介绍如何使用VSCode开发和调试.NET Core程序。我们将提供两个示例说明,演示如何使用VSCode创建和调试.NET Core Web应用程序和控制台应用程序。 前置条件 在开始之前,需要确保已经安装了以下软件: .NET Core SDK Visual Studio Co…

    C# 2023年5月16日
    00
  • C#串口编程实例代码

    为了进行C#串口编程,我们需要使用System.IO.Ports命名空间中的SerialPort类。下面是完整步骤: 打开Visual Studio,创建一个新的C#控制台应用程序。 在“解决方案资源管理器”的项目中右键单击“引用”,选择“添加引用”,然后选中“System.IO.Ports”。 打开Program.cs文件,在命名空间后添加以下代码: us…

    C# 2023年5月31日
    00
  • C#实现简单的3DES加密解密功能示例

    C#实现简单的3DES加密解密功能示例可以分为以下步骤:1. 引入命名空间 using System.Security.Cryptography; 创建3DES加密对象 TripleDESCryptoServiceProvider des3 = new TripleDESCryptoServiceProvider(); 设置加密密钥和 IV des3.Key…

    C# 2023年6月7日
    00
  • C#中使用IFormattable实现自定义格式化字符串输出示例

    下面是“C#中使用IFormattable实现自定义格式化字符串输出”的完整攻略: 什么是IFormattable IFormattable是C#中的一个接口,它可以使类型实现自定义格式化字符串,比如你可以定义一个日期类型只输出年份和月份。通过实现IFormattable接口的ToString方法,你可以在字符串中使用自定义格式符输出类型的实例。ToStri…

    C# 2023年5月31日
    00
  • ASP.NET在VS2022中使用Dispose释放资源实例

    下面是关于ASP.NET在VS2022中使用Dispose释放资源实例的详细攻略。 什么是Dispose Dispose是IDisposable接口定义的方法,它是一种在释放一个对象的时候执行清理操作的方式。Dispose方法允许我们释放非托管资源、取消订阅事件和释放接口中的其他资源。 为什么需要使用Dispose 对于实现了IDisposable接口的对象…

    C# 2023年6月3日
    00
合作推广
合作推广
分享本页
返回顶部