|
10 / 10 / 4
Регистрация: 05.08.2009
Сообщений: 101
|
|
Где хранить настройки программы (свойства формы и её компонентов)06.08.2009, 15:44. Показов 21398. Ответов 50
Метки нет (Все метки)
Уважаемые, мне необходимо где-то хранить настройки программы (например, если пользователь не хочет видеть статусную панель и её отключил через меню, то при запуске формы она не должна быть показана). Я слышал, что для хранения подобных настроек можно использовать файл settings, файл конфигурации, ini-файл, txt-файл, реестр, но один знакомый прогер посоветовал мне использовать XML, дескать, если C#, то C# + XML = мегабомба. Может кто помочь с сериализацией.
0
|
|
| 06.08.2009, 15:44 | |
|
Ответы с готовыми решениями:
50
В чём правильно хранить настройки динамически созданных компонентов
|
|
336 / 269 / 21
Регистрация: 30.03.2009
Сообщений: 500
|
|
| 23.12.2009, 16:12 | |
|
Да, есть у каждого, это первая строка окна "свойства" (Property)-- ApplicationSettings
там при раскрытии выбираете необходимое из возможных, а сохраняется все автоматически! Очень удобно. Удачи.
1
|
|
|
467 / 344 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
|
|
| 23.12.2009, 16:39 | |
|
Еще раз спасибо! Вы очень помогли. Если появится еще какой-то 'подводный камень' - я напишу. Буду надеяться на помощь.
Добавлено через 9 минут Кстати, а где эти данные будут храниться?
0
|
|
|
|
|
| 23.12.2009, 16:52 | |
|
Блин, а я вот сам написал класс для хранения настроек... этот класс сам создаёт что-то типа *.ini файла. Отличие в том, что мой класс ещё и шифрует настройки....
Если хотите, могу поделиться....
1
|
|
|
467 / 344 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
|
|
| 23.12.2009, 20:22 | |
|
Не отказался бы. Я тоже когда-то написал, но это слишком долго по сравнению с уже встроенными функциями.
0
|
|
|
336 / 269 / 21
Регистрация: 30.03.2009
Сообщений: 500
|
||
| 24.12.2009, 10:05 | ||
|
Пишите, если смогу-помогу. Данные хранятся в файле user.config типа XML, расположен он в дикой подвложенности текущего юзера, где-то примерно так C:\Documents and Settings\UserName\Local Settings\Application Data\организация на котор рег VS по умолчанию\Приложение.vshost.exe_Url_gejn h5upq3i4qkln4iucya52vyhgzbi0\1.0.0.0\use r.config. Удачи.
1
|
||
|
61 / 50 / 1
Регистрация: 09.07.2009
Сообщений: 451
|
||
| 24.12.2009, 22:13 | ||
|
А вообще мне очень понравилась простота работы с файлом настроек. В дальнейшем буду им обязательно пользоваться. Единственное что - мне-то удобно, а вот безрукому пользователю трудно разобраться в xml файле, чтобы изменить настройки, в ini проще и нагляднее.
1
|
||
|
467 / 344 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
|
|
| 25.12.2009, 01:58 | |
|
Я не проверял, но по идее, файл создается автоматически когда изменяются стандартные настройки. Иначе б в нем не было смысла. Может быть Вы не использовали метож .Save()?
Не по теме: Приятно, что среди нас, программистов, есть немало девушек.
0
|
|
|
336 / 269 / 21
Регистрация: 30.03.2009
Сообщений: 500
|
|||
| 25.12.2009, 10:02 | |||
|
Правильно, только если что-то изменяли, тогда файл создается. .Save() тоже необходимо использовать перед закрытием приложения. body90, полностью с Вами согласен не по теме! Добавлено через 4 минуты Позвольте и мне с Вами не согласиться. Напрямую файл изменять даже,как-то некультурно. А безрукому пользователю вообще лазить по системным вещам противопоказано!
1
|
|||
|
61 / 50 / 1
Регистрация: 09.07.2009
Сообщений: 451
|
||||
| 25.12.2009, 18:08 | ||||
![]()
1
|
||||
|
61 / 50 / 1
Регистрация: 09.07.2009
Сообщений: 451
|
|
| 13.01.2010, 00:29 | |
|
Возвращаясь к теме...
Завтра собиралась сделать сохранение измененных настроек программы. Однако, косяк выходит... Почитав в инете, я поняла, что изменять можно только пользовательские настройки, которые определены как User, а вот программные, которые определены как Application, являются readOnly... Вот засада-то! Единственное, что приходит в голову - удалять файл настроек и создавать новый. Но каким образом - понятия не имею... Есть еще идеи? Конкретно с файлом настроек, про собственноручно xml-файл пока не говорим.
0
|
|
|
467 / 344 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
|
|
| 13.01.2010, 02:30 | |
|
На эту проблему я сам перу дней назад натолкнулся. А почему не хранить настройки для каждого пользователя отдельно? Или создать метод, который будет искать файл настройки у остальных пользователей и копировать в своего)
0
|
|
|
61 / 50 / 1
Регистрация: 09.07.2009
Сообщений: 451
|
|
| 13.01.2010, 19:10 | |
|
Сделала я настройки для юзера. Все было замечательно весь день - удаляла этот файл, он создавался снова... Но потом что-то я такое сделала, что файл перестал появляться, а программа откуда-то брала настройки... Вся расстроилась под конец рабочего дня...
Куда он делся и где его теперь искать, а главное - что я такого сделала, - вот задачка-то... ![]() Подумываю может тупо на ini-файле сделать все? Немного погуглив поняла, что тут тоже не все так просто...
0
|
|
|
336 / 269 / 21
Регистрация: 30.03.2009
Сообщений: 500
|
||
| 13.01.2010, 19:41 | ||
|
А каким образом Вы сделали настройки для юзера? Поделитесь, если не жалко! С уважением, Дима.
0
|
||
|
61 / 50 / 1
Регистрация: 09.07.2009
Сообщений: 451
|
||
| 13.01.2010, 19:50 | ||
|
Отчего же, не жалко совсем. Я выше писала, что при создании файла настроек можно указать область действия конкретной настройки - приложение или пользователь. Вот там и указывается - Application или User.
Но, вообще, как-то уже боязно использовать этот файл настроек, когда не знаешь что он еще выкинет.... И где его искать и что от него ожидать... Лучше уж допотопный, но надежный ini-шник... Наверное... На крайняк можно использовать xml-файл, хотя не хотелось бы, а то пользователю трудно будет в нем разобраться.
1
|
||
|
467 / 344 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
|
|
| 13.01.2010, 20:54 | |
|
А можно как поступали наши деды - в обычный бинарный файл?
0
|
|
|
61 / 50 / 1
Регистрация: 09.07.2009
Сообщений: 451
|
||||||
| 13.01.2010, 21:05 | ||||||
|
Неее... Я щас тренируюсь с обычным текстовым файлом. Очень даже здорово получается. Показать?
Добавлено через 9 минут Есть текстовый файл Setting.txt такого вида: ServerName=sql_server\sqlexpress User=SQL_User Password=123 И такая маленькая программка - все очень просто:
0
|
||||||
|
84 / 84 / 19
Регистрация: 17.12.2007
Сообщений: 574
|
||||||||||||
| 13.01.2010, 22:35 | ||||||||||||
|
Часто возникает задача хранить какие-то данныев конфигах, потом быстро и безболезненно их читать, перечитывать, изменять. Все это очень удобно делать с помощью появившегося с .NET 2.0 средства - Settings. Добавить их в проект просто - Add new Item - Settings. В моем примере, я дал им красивое и наглядное имя - MySettings Нажмем OK, и что же произошло? А вот что: 1. Появилось 3 новых файла: MySettings.Designer.cs MySettings.settings MySettings.cs 2. В проекте появился новый член команды - MySettings.settings, если кликнуть по которому, появится красивый дизайнер, с помощью которого можно добавлять свои свойства для хранения. Каждое свойство содержит следующие критерии: Name - наименование свойства класса и секции конфига Type - тип данных (от простых типов, до собственных, лишь бы сериализоваться умели) Scope - тип хранения и доступа к свойству. Имеет 2 значения - User, Application, на них я остановлюсь попозже. Value - значение свойства (будет использоваться как значение по умолчанию) Создадим 2 тестовых свойства: Name Type Scope Value MyDate DateTime User любая дата MyString string Application "какая то строка" Что при этом происходит: Волшебным образом в проект добавился app.config (если не был до этого), видим в нем следующее: <?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <sectionGroup name="userSettings" type="System.Configuration.UserSettingsG roup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" > <section name="ConsoleApplication3.MySettings" type="System.Configuration.ClientSetting sSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" /> </sectionGroup> <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSe ttingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" > <section name="ConsoleApplication3.MySettings" type="System.Configuration.ClientSetting sSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> </sectionGroup> </configSections> <userSettings> <ConsoleApplication3.MySettings> <setting name="MyDate" serializeAs="String"> <value>2008-03-21</value> </setting> </ConsoleApplication3.MySettings> </userSettings> <applicationSettings> <ConsoleApplication3.MySettings> <setting name="MyString" serializeAs="String"> <value>какая то строка</value> </setting> </ConsoleApplication3.MySettings> </applicationSettings> </configuration> Я думаю для тех, кто понимает xml - коментарии излишни Теперь зайдем в класс дизайнера и видим следующие сгеренированные нам свойства:
Кроме этого видим установленные нами свойсва по умолчанию аттрибутами DefaultSettingValueAttribute. Хочу обратить внимание, что значения user scope свойств не хранятся в app.config, он не переписывается при вызове метода Save(), все данные хранятся в домашнем каталоге пользователя. Это значит что если в ОС есть пользователи Петя и Вася, они оба пользуются написанной нами программой - у них будут общие Default значения, а сохраненные значения User scope - у каждого свои. Использование наших наработок:
3
|
||||||||||||
|
336 / 269 / 21
Регистрация: 30.03.2009
Сообщений: 500
|
|
| 14.01.2010, 10:13 | |
|
Доброго дня всем!
Благодарность FreeWay! Отличное описание! Всем вопрос- как заставить файл инициализации(я имею ввиду стандартный settings) сохраняться в рабочей директории, там где находится exe?
0
|
|
|
84 / 84 / 19
Регистрация: 17.12.2007
Сообщений: 574
|
||
| 14.01.2010, 17:29 | ||
|
Может ты CurrentDirectory меняешь?
0
|
||
|
61 / 50 / 1
Регистрация: 09.07.2009
Сообщений: 451
|
||
| 14.01.2010, 19:16 | ||
|
Если настройки для Application, то файл создастся в папке с файлом программы. А если для User, то в папке юзера Documents and Settings\<имя пользователя>\Application Data\<имя проекта>
Добавлено через 3 минуты
2
|
||
| 14.01.2010, 19:16 | |
|
Помогаю со студенческими работами здесь
40
Где хранить иконки для компонентов? Как и где хранить настройки приложения
Где лучше хранить сведения о параметрах компонентов? Где лучше всего хранить настройки приложения Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|
|
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои.
А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
|
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
kYBz3eJf3jQ
|
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
|
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
|