Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.87/106: Рейтинг темы: голосов - 106, средняя оценка - 4.87
10 / 10 / 4
Регистрация: 05.08.2009
Сообщений: 101

Где хранить настройки программы (свойства формы и её компонентов)

06.08.2009, 15:44. Показов 21240. Ответов 50
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Уважаемые, мне необходимо где-то хранить настройки программы (например, если пользователь не хочет видеть статусную панель и её отключил через меню, то при запуске формы она не должна быть показана). Я слышал, что для хранения подобных настроек можно использовать файл settings, файл конфигурации, ini-файл, txt-файл, реестр, но один знакомый прогер посоветовал мне использовать XML, дескать, если C#, то C# + XML = мегабомба. Может кто помочь с сериализацией.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.08.2009, 15:44
Ответы с готовыми решениями:

Где хранить настройки программы
Собственно, вопрос в названии. Пишу программу, в которой много настроек, как зашифрованных, так и нет. Сейчас встал вопрос: "Где...

В чём правильно хранить настройки динамически созданных компонентов
Нужно запомнить такую структуру . Есть не ограниченное количества панелей они могут добавляться , удаляться , изменяться и в каждой из них...

Где лучше хранить настройки?
Мне нужно сохранить в основном цвета. Допустим я задел цвет линиям красный, фон черный и так далее. Потом после нового запуска программы...

50
Комбайнёр
 Аватар для MAcK
1606 / 704 / 77
Регистрация: 27.05.2008
Сообщений: 2,535
06.08.2009, 15:48
В файле конфигурации, тобиш app.config
1
10 / 10 / 4
Регистрация: 05.08.2009
Сообщений: 101
06.08.2009, 15:52  [ТС]
А кодом помочь можешь?
0
Комбайнёр
 Аватар для MAcK
1606 / 704 / 77
Регистрация: 27.05.2008
Сообщений: 2,535
06.08.2009, 15:57
Ща

Добавлено через 3 минуты 13 секунд
Solution explorer->properies->settings.setings-> dubl click-> добавляешь что хочешь

а потом:
C#
1
2
3
            WindowsFormsApplication1.Properties.Settings.Default.Skyline = "Skyline";
            WindowsFormsApplication1.Properties.Settings.Default.Save();
            string str =  WindowsFormsApplication1.Properties.Settings.Default.Skyline;
2
10 / 10 / 4
Регистрация: 05.08.2009
Сообщений: 101
06.08.2009, 16:02  [ТС]
Хорошо, а со статусной панелью (StatusStrip1) как будет? Т.е. при загрузке формы где писать StatusStrip1.Visible = false? И куда прописывать твой код?
0
Комбайнёр
 Аватар для MAcK
1606 / 704 / 77
Регистрация: 27.05.2008
Сообщений: 2,535
06.08.2009, 16:16
Создаёшь переменную в setting типа булеан пишешь ему true.
а потом в кострукторе пишешь как я


StatusStrip1.Visible = WindowsFormsApplication1.Properties.Sett ings.Default.YourName
2
10 / 10 / 4
Регистрация: 05.08.2009
Сообщений: 101
08.08.2009, 00:13  [ТС]
Как программно изменить значение переменной в settings? Т.е., было true, а я хочу поставить false при закрытии формы.
0
MCSD: APP BUILDER
 Аватар для IT_Exp
8795 / 1074 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
08.08.2009, 00:14
C# + XML = мегабомба
то, что "мега" - это верно.
0
274 / 200 / 33
Регистрация: 18.04.2009
Сообщений: 177
09.08.2009, 00:25
lekha2009, примерно так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (statusStrip1.Visible == true)
            {
                Trying_XML_Serialization.Properties.Settings.Default.statusStripVisible = true;
                //это очень важно, есть в посте от IT-Skyline
                Trying_XML_Serialization.Properties.Settings.Default.Save();
            }
            else
            {
                Trying_XML_Serialization.Properties.Settings.Default.statusStripVisible = false;
                //это очень важно, есть в посте от IT-Skyline
                Trying_XML_Serialization.Properties.Settings.Default.Save();
            }
        }
недочёты отлови самостоятельно.
2
2 / 2 / 0
Регистрация: 18.02.2009
Сообщений: 3
21.12.2009, 19:18
А может проще не повторяться?

C#
1
2
3
4
5
6
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
             Trying_XML_Serialization.Properties.Settings.Default.statusStripVisible = statusStrip1.Visible;
             //это очень важно, есть в посте от IT-Skyline
             Trying_XML_Serialization.Properties.Settings.Default.Save();
        }
1
 Аватар для body90
467 / 344 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
22.12.2009, 03:39
А сохранять можно только простые типы? Что делать, если нужно сохранить много данных об одном объекте (например, положение окна, его размеры, способ отображения и т.д.)?
Все параметры нужно хранить и инициализировать отдельно или есть какой-то способ?

Добавлено через 37 минут
И еще вопрос: где уже в конечном приложений должен лежать этот файл с настройками?

Добавлено через 11 минут
Еще вопрос:
Для чего в окне редактора настроек поле "Область" (на что оно влияет)?
0
 Аватар для deathNC
1905 / 1016 / 123
Регистрация: 08.12.2009
Сообщений: 2,792
Записей в блоге: 2
22.12.2009, 03:57
А я всегда в реестре сохраняю...
ключ:
HKey_Current_User\Software\**Имя компании**\**Имя программы**\
мне это удобнее всего...

Например "HKey_Current_User\Software\Necronom icon Corporation\Filewalker\"...
0
 Аватар для body90
467 / 344 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
22.12.2009, 05:08
Я считаю, что приложения, не требующие установки должны таскать всё с собой, а не сорить в реестре. А приложения с установкой должны могут хранить данные в системе, но чистить их при деинсталляции. Но это чисто моё, может быть не объективное мнение.

Может всё же кто-то сможет помочь мне с моими вопросами?
0
 Аватар для Лакшми
61 / 50 / 1
Регистрация: 09.07.2009
Сообщений: 451
22.12.2009, 21:53
Я вот тоже сейчас мучаюсь данным вопросом... Знакомый просто создает вручную файл xml и читает из него. А мне кажется более удобным использование settings в самой программе. Пока вроде получается. Ввела параметры вручную в конструкторе, читаю программно.
0
 Аватар для body90
467 / 344 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
22.12.2009, 23:56
Знающие, помогите, пожалуйста, не грамотным в этих вопросах.
0
MCSD: APP BUILDER
 Аватар для IT_Exp
8795 / 1074 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
23.12.2009, 00:01
body90,

Знающие, помогите, пожалуйста, не грамотным в этих вопросах.

если не знаешь что выбрать, выбирай xml.
1
 Аватар для Лакшми
61 / 50 / 1
Регистрация: 09.07.2009
Сообщений: 451
23.12.2009, 00:06
Весь вечер рылась по этому поводу в инете, и вот что я могу ответить, насколько я поняла.
Цитата Сообщение от body90 Посмотреть сообщение
А сохранять можно только простые типы? Что делать, если нужно сохранить много данных об одном объекте (например, положение окна, его размеры, способ отображения и т.д.)?
Все параметры нужно хранить и инициализировать отдельно или есть какой-то способ?
Я думаю, надо хранить все отдельно. Типа Location.X = 100, Location.Y = 150, Width = 500, Height = 400.

Цитата Сообщение от body90 Посмотреть сообщение
И еще вопрос: где уже в конечном приложений должен лежать этот файл с настройками?
Файл с настройками лежит в зависимости от того, какой выбран Scope (наверное Вы имели в виду "Область"). Если выбрано Application, то хранится в папке проекта, а если User, то в папке пользователя.

Цитата Сообщение от body90 Посмотреть сообщение
Для чего в окне редактора настроек поле "Область" (на что оно влияет)?
Ну вот это и есть определение - настройки для приложения, которые действуют для всех пользователей, и настройки юзера - только для конкретного.
1
 Аватар для body90
467 / 344 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
23.12.2009, 00:49
Огромнейшее спасибо!
А если приложение перенести на другой компьютер, этот файл сам создастся?

Добавлено через 5 минут
А то на данный момент нет на чем проверить.
0
 Аватар для dimasamchenko
336 / 269 / 21
Регистрация: 30.03.2009
Сообщений: 500
23.12.2009, 10:21
Цитата Сообщение от body90 Посмотреть сообщение
Огромнейшее спасибо!
А если приложение перенести на другой компьютер, этот файл сам создастся?

Добавлено через 5 минут
А то на данный момент нет на чем проверить.
Доброго дня Коллеги!
Да, создастся(при закрытии приложения)! Если при первом запуске приложения файла нет то происходит инициализация значениями по умолчанию(не забудь определить эти значения не все подставляются автоматом!!!).
Теперь о "Я думаю, надо хранить все отдельно. Типа Location.X = 100, Location.Y = 150, Width = 500, Height = 400."
НЕНАДО!!! У каждого компонента есть свойство ApplicationSettings, выбирайте там все что нужно
(я, например сохраняю месторасположение диалога на форме, куда его пользователь затащит там и откроется в след. раз)!!! Жаль, что не все свойства компонента там доступны, для остальных свойств надо руками создавать переменные и руками назначать после загрузки.
1
 Аватар для body90
467 / 344 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
23.12.2009, 15:39
Спасибо! Поищу это свойство. Оно есть у каждого элемента управления?
И как его сохранять?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.12.2009, 15:39
Помогаю со студенческими работами здесь

Где хранить иконки для компонентов?
Хочу научить компонент прорисовывать иконки. Если упаковать его в jar, как их сохранить??

Как и где хранить настройки приложения
Есть WIN приложение, есть возможность указать в нем некоторые опции. Как обычно поступают? Создают класс опций а потом обращаются к...

Где в UWP хранить настройки приложения?
В WPF есть Setting.setting а в UWP нету в Properties

Где лучше хранить сведения о параметрах компонентов?
Разрабатывается IDE. Вопрос: сведения о параметрах компонентов лучше хранить в XML файле или разработать для этого иерархию классов, или и...

Где лучше всего хранить настройки приложения
Доброго времени суток. Пишу программу на Windows Forms. Нужно сохранять некие настройки программы. База работает с БД Access, но туда...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru