【问题标题】:Use DataGridView for local settings使用 DataGridView 进行本地设置
【发布时间】:2010-08-27 23:23:51
【问题描述】:

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

【问题讨论】:

    标签: c# datagridview settings


    【解决方案1】:

    这就是我的做法。 MyMap 类保存值对。它们必须是属性,因为 DatGridView 不适用于字段。 MyMapCollection 将 MyMap 的集合保存为 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;
        }
    }
    

    Function Clone 创建对象的深层副本,这样数据不会直接在 Settings.Default 中的对象上更改,而是在用户说的时候更改。在设置编辑器中,您将添加一个 MyMapCollection 类型的项目,称为 TheValues,并在代码中非常简单地使用它:

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

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

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

    使用 DataTable 或 DataSet 代替 MyMapCollection 也是可能的,但这个解决方案允许我在其余代码中使用 TheValues,这比 DataSet 本来的更好。

    【讨论】:

      【解决方案2】:

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

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

      这是一个如何创建您自己的自定义配置的链接。 MSDN link

      【讨论】:

      • 好的,这是一种方法,但显然需要大量额外的编码。另一方面,在“设置”页面中,我可以将一个应用程序设置的类型更改为 System.Data.DataSet,这让我认为可以将该设置以某种方式绑定到 DataGridView,并使用很少的行来完成所有工作的代码。我只需要那些行:-)
      猜你喜欢
      • 2011-11-04
      • 2022-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多