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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как сохранять элементы ListView? 
:(
    Опции темы
medos
Дата 19.5.2006, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Собственно нужно сохранять/открывать результаты изменений в Listview.

Как бы попроще это сделать? 
PM MAIL   Вверх
Ch0bits
Дата 19.5.2006, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Python Dev.
****


Профиль
Группа: Завсегдатай
Сообщений: 2124
Регистрация: 21.2.2005
Где: Казань

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



Например записывать item'ы в текстовый файл или использовать сериализацию. 
PM WWW   Вверх
medos
Дата 19.5.2006, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



А можно поподробнее и с примерами хотя-бы основных частей кода?

очень сильно поджимает время (сессия)  smile  
PM MAIL   Вверх
Ch0bits
Дата 19.5.2006, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Python Dev.
****


Профиль
Группа: Завсегдатай
Сообщений: 2124
Регистрация: 21.2.2005
Где: Казань

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



Всё просто как три копейки  smile 
Код

        /// <summary>
        /// Сохранение элементов ListBox
        /// </summary>
        /// <param name="box">Наш ListBox</param>
        /// <param name="FileName">Сохраняемый файл</param>
        public void SaveListBoxItems(ListBox box, string FileName)
        {
            using (StreamWriter SW = new StreamWriter(FileName))
            {
                for (int i = 0; i < box.Items.Count; i++)
                    SW.WriteLine(box.Items[i].ToString());
            }
        }

        /// <summary>
        /// Загрузка элементов ListBox
        /// </summary>
        /// <param name="box">Наш ListBox</param>
        /// <param name="FileName">Загружаемый файл</param>
        public void LoadListBoxItems(ListBox box, string FileName)
        {
            box.BeginUpdate();
            box.Items.Clear();
            using (StreamReader SR = new StreamReader(FileName))
            {
             string Str;
                while((Str=SR.ReadLine())!=null)
                    box.Items.Add(Str);
            }
            box.EndUpdate();
            box.TopIndex = 0;
        }
 
PM WWW   Вверх
medos
Дата 19.5.2006, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо за пример.

А для listview с несколькими subitem это подойдет?

И еще момент непонял:
Код

...StreamWriter(FileName))


Здесь имя файла или что-то типа: (@"c:\filename.txt")
 
PM MAIL   Вверх
Ch0bits
Дата 19.5.2006, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Python Dev.
****


Профиль
Группа: Завсегдатай
Сообщений: 2124
Регистрация: 21.2.2005
Где: Казань

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



Аааа!  smile Я перепутал ListView с ListBox!  smile  
PM WWW   Вверх
medos
Дата 21.5.2006, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Попробовал осуществить сериализацию listview, но компилятор выдает исключение, вероятнее всего из-за того, что объект listview не имеет интерфейса сериализации.

Можно ли все-таки сериализовать listview не прибегая к разбиению на items?  smile 
 
PM MAIL   Вверх
Wanderer2019
Дата 21.5.2006, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Зачем тебе сеализовать весь контрол то??? Сеарилизуй все Items.
можно так:
Код

BinaryFormatter bf = new BinaryFormatter();

Serialize:
Код

FileStream fs=new FileStream(@"1.dat",System.IO.FileMode.Create);
bf.Serialize(fs,new ArrayList(listView1.Items));

Deserialize:
Код

FileStream fs=new FileStream(@"1.dat",System.IO.FileMode.Open);
ArrayList arr=(ArrayList)bf.Deserialize(fs);
listView1.Items.AddRange((ListViewItem[])arr.ToArray(arr[0].GetType()));

вроде работает.
пробуй. 
PM ICQ MSN   Вверх
medos
Дата 22.5.2006, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо, Wanderer2019, за пример.

А могу ли я сериализировать items нескольких listview в один файл? Может быть для этого есть какие-нибудь разделители данных, чтобы данные не путались? 
PM MAIL   Вверх
ivashkanet
Дата 22.5.2006, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


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

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



medos, можно создать массив итемсов, запихать в него всё. А потом сериализовать  smile  
PM MAIL WWW ICQ   Вверх
Wanderer2019
Дата 22.5.2006, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



ну если использовать технологию хранения коллекций items в объектах типа ArrayList, то ,как вариант, можешь создать массив этих самых ArrayList[] и хранить столько итемсов от разных ListView сколько нужно. т.е.:
Код

BinaryFormatter bf = new BinaryFormatter();
FileStream ms=new FileStream(@"C:\1.dat",System.IO.FileMode.Create);
ArrayList[] arrlist=new ArrayList[2];
arrlist[0]=new ArrayList(listView1.Items);
arrlist[1]=new ArrayList(listView2.Items);
bf.Serialize(ms,arrlist);

это просто как вариант... чтобы описать суть подхода.
  

Это сообщение отредактировал(а) Wanderer2019 - 22.5.2006, 20:13
PM ICQ MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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