Используйте DataGridView для локальных настроек - PullRequest
1 голос
/ 25 августа 2010

Мне нужен простой способ сохранить и отредактировать набор пар строк в моем приложении. Я считаю, что DataGridView с двумя входами может помочь мне с просмотром и редактированием, и я надеялся использовать настройки приложения вместо базы данных для хранения данных (возможно, DataSet в качестве типа настройки). Я просто не могу собрать все это вместе. Есть ли способ?

Ответы [ 2 ]

2 голосов
/ 27 августа 2010

Вот как я это сделал. Класс 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;
    }
}

Функция Clone создает глубокую копию объекта, так что данные не изменяются непосредственно на объекте в Settings.Default, но когда пользователи так говорят. В редакторе настроек вы бы добавили элемент типа MyMapCollection с именем say TheValues ​​и очень просто использовали его в коде:

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

Если данные необходимо изменить обратно на настройки (когда пользователь нажимает кнопку ОК), измените настройки соответствующим образом:

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

Использование DataTable или DataSet вместо MyMapCollection также возможно, но это решение позволяет мне использовать TheValues ​​в остальной части кода, который даже слаще, чем DataSet, возможно, был.

0 голосов
/ 25 августа 2010

Если значения, которые вы пытаетесь редактировать, представляют собой простые пары значений ключей, вы можете создать класс, который будет хранить эти значения в качестве свойств, и сериализовать этот объект класса в файл XML.Вы можете десериализовать класс и присвоить значения DataGridView.

Вы также можете создать собственную конфигурацию и сохранить ее отдельно от файла App.config / Web.config.Это будет похоже на то, какие файлы конфигурации NHibernate или spring.Net хранятся со ссылкой на них в ключе configsections.

Вот ссылка, как создать свою собственную пользовательскую конфигурацию. MSDN ссылка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...