Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.04.2015, 00:28   #1
Regressor
Пользователь
 
Регистрация: 15.02.2015
Сообщений: 36
По умолчанию Запоминание ширины колонок в ListView

Неприятная особенность ListView, выставишь ширину колонок как тебе нужно, закроешь-откроешь программу - все слетело, ставь заново. А есть возможность запомнить установки пользователя?
Regressor вне форума Ответить с цитированием
Старый 17.04.2015, 01:31   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ну пропишите при загрузке и закрытии желаемое.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 17.04.2015, 14:03   #3
Regressor
Пользователь
 
Регистрация: 15.02.2015
Сообщений: 36
По умолчанию

Спасибо за "подробный" ответ, это я сам понимаю.
Может кто подскажет как это должно выглядеть. При закрытии формы записать в файл состояние ListView.Width, а при загрузке формы считать его?
Regressor вне форума Ответить с цитированием
Старый 17.04.2015, 14:17   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

WinForms? WPF?

Определить где у ListView задаются нужные параметры и сохранять их в файл и обратно (желательно куда-нибудь в %AppData%\MyAppName). Можно (но не обязательно) воспользоваться стандартными Settings, которые задаются в настройках проекта и доступ через Properties.Settings.Default..., или Isolated Storage.

Скорее всего в приложении уже реализован какой-то механизм сохранения настроек если вы не первый его разработчик.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 17.04.2015 в 14:19.
Alex11223 вне форума Ответить с цитированием
Старый 18.04.2015, 01:33   #5
Regressor
Пользователь
 
Регистрация: 15.02.2015
Сообщений: 36
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
WinForms?
Скорее всего в приложении уже реализован какой-то механизм сохранения настроек если вы не первый его разработчик.
К сожалению, я. Раз уж приходится заниматься C#, взялся за его изучение на относительно несложных вещах. в данном случае сохраняю настройки колонок двух таблиц.

Вобщем, проблему я решил, наверняка это можно сделать и поизящнее, но учитывая что это первые шаги и даже все работает, оставлю как есть, только добавлю потом обработку ошибок при считывании файла, если он поврежден или его нет.
Код:
// сохранение настроек ширины колонок в файл по событию ColumnWidthChanged
    private void listViewCallRegister_ColumnWidthChanged(object sender, ColumnWidthChangedEventArgs e)
    {
        int[,] wid = new int[2, 5];
        for (int i = 0; i < listViewCallRegister.Columns.Count; i++)
        {
            wid[0, i] = listViewCallRegister.Columns[i].Width;
        }
        for (int i = 0; i < listViewCallLines.Columns.Count; i++)
        {
            wid[1, i] = listViewCallRegister.Columns[i].Width;
        }

        StreamWriter str = new StreamWriter("cwd.inf");
        for (int i = 0; i < 5; i++)
        {
            str.WriteLine(wid[0, i]);
        }
        for (int i = 0; i < 3; i++)
        {
            str.WriteLine(wid[1, i]);
        }
        str.Close();

    }
      // чтение настроек ширины колонок из файла
    private void SetTable()
    {
        int[,] wid = new int[2, 5];
        StreamReader str = new StreamReader("cwd.inf");
        for (int i = 0; i < 5; i++)
        {
            wid[0, i] = Convert.ToInt32(str.ReadLine());
        }
        for (int i = 0; i < 3; i++)
        {
            wid[1, i] = Convert.ToInt32(str.ReadLine());
        }
        str.Close();

        for (int i = 0; i < listViewCallRegister.Columns.Count; i++)
        {
            listViewCallRegister.Columns[i].Width = wid[0, i];
        }
        for (int i = 0; i < listViewCallLines.Columns.Count; i++)
        {
            listViewCallRegister.Columns[i].Width = wid[1, i];
        }
Regressor вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
редактирование ширины колонок в Richedit 4 maloun Общие вопросы Delphi 0 27.10.2014 08:51
ListView. Запрет изменения ширины колонок DETONAVOMEK Win Api 2 14.07.2012 12:33
Регулировка ширины колонок Dreanks Общие вопросы Delphi 3 16.09.2010 11:03
Автоматический подгон ширины колонок под шапку таблицы средствами VBA в MS Word Prokopulka Microsoft Office Word 2 05.06.2010 22:26
Фиксация колонок в ListView -Flasher- Общие вопросы Delphi 1 15.01.2010 12:13