使用DataGridView进行本地设置

时间:2010-08-25 16:45:19

标签: c# datagridview settings

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

2 个答案:

答案 0 :(得分:2)

我是这样做的。类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 = Settings.Default.TheValues.Clone();

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

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

使用DataTable或DataSet代替MyMapCollection也是可能的,但是这个解决方案允许我在代码的其余部分中使用TheValues,它甚至比DataSet更甜。

答案 1 :(得分:0)

如果您尝试编辑的值是普通键值对,则可以创建一个将这些值保存为属性的类,并将此类对象序列化为XML文件。您可以反序列化类并将值分配给DataGridView。

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

以下是如何创建自己的自定义配置的链接。 MSDN link