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日

相关文章

  • FtpHelper实现ftp服务器文件读写操作(C#)

    FtpHelper实现ftp服务器文件读写操作(C#) 简介 FtpHelper是一个C#编写的FTP工具,用于实现FTP服务器文件的读写操作。本文将介绍使用FtpHelper进行FTP文件读写操作的方法。 安装 使用NuGet包管理器安装FtpHelper Install-Package FtpHelper 连接FTP服务器 使用FtpHelper连接FT…

    C# 2023年6月1日
    00
  • C#对文件名智能排序的算法

    请听我讲解C#对文件名智能排序算法。 什么是文件名智能排序? 在计算机中,我们常常需要对文件进行排序操作。例如,我们可能通过文件名对某个文件夹中的所有文件进行排序。在Windows系统中,默认情况下,对文件名进行排序是按照每个字符的ASCII码进行排序的。这种排序方式通常不太符合人类对文件名的排序需求。因此,为了让文件名排序更符合人类的直觉,C#引入了文件名…

    C# 2023年6月1日
    00
  • Expression操作运算符、表达式和操作方法总结

    Expression操作运算符、表达式和操作方法总结 在JavaScript中,所有可执行的代码都是表达式。表达式由操作数和操作符组成,它们按照一定的规则排列起来,形成了一个运算式。JavaScript中有许多操作符和操作方法,下面将详细讲解它们的用法。 基本操作符 基本操作符包括算数操作符、赋值操作符、比较操作符、逻辑操作符等。 算数操作符 算数操作符用于…

    C# 2023年6月7日
    00
  • ASP.NET:把ashx写到类库里并在页面上调用的具体方法

    将ashx写到类库( Class library )里并在页面上调用的具体方法, 可以带来代码可维护性和代码的可重用性,并且能够更好地分离底层实现和上层( Presentation layer )代码。 下面是具体的步骤: 创建 ASP.NET 类库项目 首先,我们需要做的就是创建一个 ASP.NET 类库项目。我们可以在 Visual Studio 中选择…

    C# 2023年6月3日
    00
  • 详解C#把DataTable中数据一次插入数据库的方法

    详解C#把DataTable中数据一次插入数据库的方法 1. 前言 在开发过程中,我们常常需要一次性地将DataTable中的数据批量插入到数据库中,这样可以提高效率,避免频繁地对数据库进行操作。本文将详细讲解如何使用C#把DataTable中数据一次插入到数据库的方法。 2. 示例说明 2.1 使用SqlBulkCopy插入数据 将DataTable中的数…

    C# 2023年5月31日
    00
  • C#调用系统API指定快捷键的方法

    下面是详细的讲解“C#调用系统API指定快捷键的方法”的完整攻略。 1. 确定快捷键 在使用系统API指定快捷键之前,我们需要先确定需要指定的快捷键。快捷键通常由按键、修饰键(如Ctrl、Alt、Shift等)和热键消息(如WM_HOTKEY)组成。其中,按键可以是任意一个普通按键(如字母、数字、符号等),修饰键可以是Ctrl、Alt、Shift或这些修饰键…

    C# 2023年6月7日
    00
  • jQuery获取地址栏参数插件(模仿C#)

    jQuery获取地址栏参数插件(模仿C#)是一个可以方便的获取URL参数的工具。下面是详细的攻略: 1. 插件的引入 首先需要在页面中引入jQuery库,然后才能引入该插件。可以使用以下代码: <script src="https://code.jquery.com/jquery-3.5.1.min.js"></scri…

    C# 2023年5月15日
    00
  • 详解c# 并行计算

    详解C#并行计算攻略 前言 在当今高端计算领域,利用计算机的多核资源进行并行计算已成为一个过程中必不可少的一部分。C# .NET Framework提供了丰富的并行计算库,为我们节省了大量的编写时间,提高了计算的速度和效率。本篇文章将深入探究如何使用C# 实现并行计算。 Parallel类 Parallel类是.NET Framwork中一个非常有用的类,它…

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