C# winform datagridview 对json配置文件进行增删改查
时间: 2023-06-29 07:09:04 浏览: 732
首先,需要将json文件读入到程序中,可以使用Newtonsoft.Json库实现。然后,将json数据绑定到DataGridView控件上面,以实现数据的展示和编辑。对于增删改查操作,可以通过DataGridView控件提供的事件和方法来实现。
下面是一个基本的示例代码:
```csharp
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Windows.Forms;
namespace JsonConfigEditor
{
public partial class MainForm : Form
{
private string _configFilePath = "config.json";
private List<ConfigItem> _configItems = new List<ConfigItem>();
public MainForm()
{
InitializeComponent();
}
private void MainForm_Load(object sender, EventArgs e)
{
// 读取配置文件
if (File.Exists(_configFilePath))
{
string json = File.ReadAllText(_configFilePath);
_configItems = JsonConvert.DeserializeObject<List<ConfigItem>>(json);
}
// 绑定DataGridView控件
dataGridView1.DataSource = _configItems;
}
private void btnSave_Click(object sender, EventArgs e)
{
// 保存配置文件
string json = JsonConvert.SerializeObject(_configItems);
File.WriteAllText(_configFilePath, json);
}
private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
// 更新配置项
if (e.RowIndex >= 0 && e.ColumnIndex >= 0)
{
var configItem = _configItems[e.RowIndex];
switch (dataGridView1.Columns[e.ColumnIndex].Name)
{
case "Key":
configItem.Key = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
break;
case "Value":
configItem.Value = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
break;
}
}
}
private void btnAdd_Click(object sender, EventArgs e)
{
// 添加新的配置项
_configItems.Add(new ConfigItem { Key = "", Value = "" });
dataGridView1.DataSource = null;
dataGridView1.DataSource = _configItems;
}
private void btnDelete_Click(object sender, EventArgs e)
{
// 删除选中的配置项
foreach (DataGridViewRow row in dataGridView1.SelectedRows)
{
_configItems.RemoveAt(row.Index);
}
dataGridView1.DataSource = null;
dataGridView1.DataSource = _configItems;
}
private void btnSearch_Click(object sender, EventArgs e)
{
// 查找关键字匹配的配置项
string keyword = txtKeyword.Text.Trim();
if (!string.IsNullOrEmpty(keyword))
{
var result = _configItems.FindAll(item => item.Key.Contains(keyword) || item.Value.Contains(keyword));
dataGridView1.DataSource = null;
dataGridView1.DataSource = result;
}
else
{
dataGridView1.DataSource = null;
dataGridView1.DataSource = _configItems;
}
}
}
public class ConfigItem
{
public string Key { get; set; }
public string Value { get; set; }
}
}
```
在这个示例代码中,我们使用了一个List<ConfigItem>来存储读入的json数据,并将其绑定到了DataGridView控件上。然后,我们实现了一些按钮的点击事件,用于添加、删除、保存、查找配置项。在DataGridView控件的CellValueChanged事件中,我们可以捕获用户对配置项的修改,并将其同步到_configItems列表中。最后,在保存配置文件时,我们将_configItems序列化为json格式,并写入到磁盘文件中。
阅读全文