winforms - 我想在输入数据后将datagridview转换为ini文件
问题描述
我想在输入数据后将datagridview转换为ini文件。
http://www.hoons.net/Board/qacshap/Content/67073
当我输入上面的网址时,
我尝试将数据放入网格中,然后按导出按钮将其保存为节、键、值形式的 .ini 文件。我应该怎么办?在代码内部,内容被创建为一个 ini 文件,而不是一个网格。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.IO;
namespace EXPORT
{
public partial class Form1 : DevExpress.XtraEditors.XtraForm
{
[DllImport('kernel32')]
public static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
[DllImport('kernel32')]
public static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
static string path = 'C:\\Test.ini';
public Form1()
{
InitializeComponent();
dataGridView1.AllowUserToAddRows =true; //자동 행 추가
dataGridView1.AutoGenerateColumns = false;
}
private void button1_Click(object sender, EventArgs e)
{
WritePrivateProfileString('SECTION', 'KEY', 'VALUE', @'C:\ConnectionInfo.ini');
MessageBox.Show('EXPORT successfully to *.INI format');
}
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
}
private void WriteInFile(string section,string key,string value,string path)
{
WritePrivateProfileString(section, key, value, path);
if (value == null)
{
throw new ArgumentException();
}
}
private void button2_Click(object sender, EventArgs e) //ADD_ROW Button
{
DataGridViewButtonColumn button = new DataGridViewButtonColumn();
{
dataGridView1.Rows.Add();
}
}
}
}
解决方案
您可以为此使用我的MadMilkman.Ini库,方法如下:
private void button1_Click(object sender, EventArgs e)
{
IniFile iniFile = new IniFile();
IniSection iniSection = null;
foreach (DataGridViewRow row in this.dataGridView1.Rows)
{
if (row.IsNewRow)
break;
string section = row.Cells[0].Value?.ToString();
string key = row.Cells[1].Value.ToString();
string value = row.Cells[2].Value.ToString();
if (!string.IsNullOrEmpty(section))
iniSection = iniFile.Sections.Add(section);
iniSection.Keys.Add(key, value);
}
iniFile.Save("C:\\Test.ini");
}
此外,生成的“Test.ini”文件如下所示:
[a]
123=456
789=234
345=678
[b]
123=456
789=234
345=678
推荐阅读
- mysql - 如何修复:在多个连接表中的 SQL 搜索没有结果
- ionic4 - 如何为每个页面创建不同的菜单页面
- php - 调用未定义的方法 Spatie\Sitemap\Sitemap::getType()
- flutter - 输入'未来
' 不是类型 'function' 的子类型 - python-3.x - 使用 pyodbc 在 SQL 表中插入多个值的列表
- django - django 使用查询集进行注释
- jmh - 如何为 JMH 中的不同测试提供不同的初始化(设置)方法?
- javascript - 如何只给一个词搜索对象列表
- javascript - 我从 http 请求到 aws s3 多部分上传的流未存储完整文件
- cognos - IBM Cognos:匹配多列(两个外键)