Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с Сохранением настроек 
:(
    Опции темы
drdoom
Дата 21.11.2008, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 29.1.2008
Где: Саратов

Репутация: 1
Всего: 1



Многие знают что можно сохранить настройки программы следующим образом
Код

           Properties.Settings settings = new Maria.Test.Properties.Settings();
            settings.Width = width;
            settings.Height = height;
            settings.Save();

где width и height это собстно то что вы хотите сохранить а settings.Width и settings.Height  поля сохранений задаваемые в файле Settings.settings.
так вот у мя проблема возникла с с этим. Есть следующий код
Код

           Properties.Settings settings = new Maria.Test.Properties.Settings();
            settings.Width = width;
            settings.Height = height;
            settings.SplitterPosition = splitterPosition;
            settings.ColumnInfoCollection = columnInfoCollection;
            settings.Save();

В нем первые три настройки сохраняются нормально, а вот четвертая, которая ColumnInfoCollection не хочет. 
ColumnInfoCollection это ArrayList экземпляров вот этого класса 
Код

    public class ColumnInfo
    {
        private string propertyName;

        public string PropertyName
        {
            get { return propertyName; }
            set { propertyName = value; }
        }

        private double width;

        public double Width
        {
            get { return width; }
            set { width = value; }
        }

        private string header;

        public string Header
        {
            get { return header; }
            set { header = value; }
        }
         
    }

Подробнее о проблеме: останавливал прогу перед методом Save(), в поле  settings.ColumnInfoCollection все записалось прально. Но когда я запускаю следющую функции при старте программы :
Код

            Properties.Settings settings = new Properties.Settings();
            width = settings.Width;
            height = settings.Height;
            splitterPosition = settings.SplitterPosition;
            columnInfoCollection = settings.ColumnInfoCollection;
            

То первые три значения загружаются точно такими же каким были во время сохнанения, а  settings.ColumnInfoCollection =null.
Возможно проблема в том что коллекция из экземпляров пользовательского класса, потому что точно такой же ArrayList со значениями double сохраняется и загружается нормально.
Заранее спасибо за ответ.

Это сообщение отредактировал(а) drdoom - 21.11.2008, 22:20
PM MAIL ICQ   Вверх
Veitmen
Дата 24.11.2008, 07:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 288
Регистрация: 10.11.2006
Где: СПБ

Репутация: 3
Всего: 4



Попробуй добавить атрибут Serializable к классу.

Код

[Serializable]
 public class ColumnInfo
    {
        private string propertyName;

        public string PropertyName
        {
            get { return propertyName; }
            set { propertyName = value; }
        }

        private double width;

        public double Width
        {
            get { return width; }
            set { width = value; }
        }

        private string header;

        public string Header
        {
            get { return header; }
            set { header = value; }
        }
         
    }

Не поможет пиши.
PM MAIL ICQ   Вверх
drdoom
Дата 24.11.2008, 07:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 29.1.2008
Где: Саратов

Репутация: 1
Всего: 1



Veitmen, уже пробывал, не помогает, два дня с этой проблемой бьюсь, прям хочется класс на отдельные коллекции разбить, и отдельно сохранить, но это так убого будет выглядеть
PM MAIL ICQ   Вверх
Veitmen
Дата 24.11.2008, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 288
Регистрация: 10.11.2006
Где: СПБ

Репутация: 3
Всего: 4



Пробуй так
Код

            ArrayList  list = new ArrayList();
            list.Add(new ColumnInfo());
            Type[] types = new Type[1];
            types[0] = typeof (ColumnInfo);
            //Создаем сериализатор
            XmlSerializer ser = new XmlSerializer(typeof(ArrayList ), types);
            // создаем writer, в который будет происходить сериализация
            StringBuilder sb = new StringBuilder();
            StringWriter w = new StringWriter(sb, System.Globalization.CultureInfo.InvariantCulture);
            // сериализуем
            ser.Serialize(w, list);
            string xml = sb.ToString();
            settings.ColumnInfoCollection = xml;
            settings.Save();

            //Десериализуешь
            // создаем reader
            StringReader reader = new StringReader(settings.ColumnInfoCollection );
            // создаем XmlSerializer
            XmlSerializer dsr = new XmlSerializer(typeof(ArrayList), types);
            // десериализуем 
            ArrayList clone = (ArrayList)dsr.Deserialize(reader);

PM MAIL ICQ   Вверх
drdoom
Дата 24.11.2008, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 29.1.2008
Где: Саратов

Репутация: 1
Всего: 1



Veitmen, Огромное спасибо) работает как часы)
PM MAIL ICQ   Вверх
Veitmen
Дата 24.11.2008, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 288
Регистрация: 10.11.2006
Где: СПБ

Репутация: 3
Всего: 4



Нез.) Пометь что вопрос решен.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0723 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.