C# 使用DataGridView进行本地设置

C# 使用DataGridView进行本地设置,c#,datagridview,settings,C#,Datagridview,Settings,我需要一种简单的方法在我的应用程序中保存和编辑一组字符串对。我相信带有两个culmn的DataGridView可以帮助我查看和编辑,我希望使用应用程序设置而不是数据库来存储数据(可能是一个数据集作为设置类型)。我就是不能把这些放在一起。有办法吗?如果您试图编辑的值是纯键值对,那么您可以创建一个将这些值作为属性保存的类,并将该类对象序列化为XML文件。您可以反序列化该类并将值分配给DataGridView 您还可以创建自定义配置,并将其与App.config/Web.config文件分开存储。这与

我需要一种简单的方法在我的应用程序中保存和编辑一组字符串对。我相信带有两个culmn的DataGridView可以帮助我查看和编辑,我希望使用应用程序设置而不是数据库来存储数据(可能是一个数据集作为设置类型)。我就是不能把这些放在一起。有办法吗?

如果您试图编辑的值是纯键值对,那么您可以创建一个将这些值作为属性保存的类,并将该类对象序列化为XML文件。您可以反序列化该类并将值分配给DataGridView

您还可以创建自定义配置,并将其与App.config/Web.config文件分开存储。这与存储NHibernate或spring.Net配置文件时在configsections键中引用它们类似

下面是一个如何创建自定义配置的链接。
我是这样做的。类MyMap保存值对。它们必须是属性,因为DatGridView不处理字段。MyMapCollection将MyMaps集合保存为BindingList(允许在DataGridView中添加行)。该类是使Visual Studio设置编辑器满意所必需的,但无法使其与普通BindingList一起工作。因此:

public class MyMap {
    public String FirstField { get; set; }
    public String SecondField { get; set; }
}

public class MyMapCollection : BindingList<MyMap>
{
    public MyMapCollection Clone()
    {
        MyMapCollection result = new MyMapCollection();

        foreach (MyMap map in this)
            result.Add(new MyMap() {
                FirstField = map.FirstField, SecondField = map.SecondField });

        return result;
    }
}
如果数据应更改回设置(当用户单击“确定”时),则相应地更改设置:

Settings.Default.TheValues = (MyMapCollection)myDataGridView.DataSource;

使用DataTable或DataSet而不是MyMapCollection也是可能的,但此解决方案允许我使用代码其余部分中的值,这甚至比DataSet更甜。

好的,这是一种方法,但显然需要大量额外的编码。另一方面,在“设置”页面中,我可以将一个应用程序设置的类型更改为System.Data.DataSet,这使我认为可以以某种方式将该设置绑定到DataGridView,并使用很少的代码行使一切工作正常。我只需要这些台词:-)
Settings.Default.TheValues = (MyMapCollection)myDataGridView.DataSource;