![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
vasjon |
|
|||
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 26.9.2007 Репутация: нет Всего: нет |
Собираюсь сделать возможность открывать (выбирать) файл БД через openFileDialog, примерно представляю как я это сделаю, но вижу проблему: где сохранять (хранить) имя последнего открытого файла (выбраного) файла БД ? В файле ? В конфиграционном файле ? Если можно пример кода для сохраненния имени и востановления его.
|
|||
|
||||
thomas |
|
||||||||
![]() Доцент... почти ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1385 Регистрация: 3.10.2006 Где: " Сказочное королевство" Репутация: 6 Всего: 65 |
vasjon,
Привет. Недавно писал на VB.NET программку работающую с БД. Для хранения настроек программы использовал новую фичу от MS - My.Settings. Т.е. настройки программы хранятся в файле user.config для каждого пользователя. Редактировать их пользователь может через PropertyGrid который я выводил в отдельной форме. Код формы:
Чтобы получить нужные настройки программы идем во вкладку Settings свойств проекта. Там прописываем нужные настройки, но значения не указываем. Их укажет пользователь при старте программы. Далее нужно подредактировать сгенерированный студией файл Settings.Designer.vb. Используя аттрибуты свойств указывает к какой группе они относятся, коментарии, отображать или нет. Выглядит это примерно так
В моем случае, использовался TypedDataSet которому студия задает соединение в designermode и оно прописывается в app.config и во время работы программы изменению не подлежит. Вот чтобы это обойти и дать возможность пользователю самому указывать где лежит его база данных и сохранить это в его настройках(user.config) и забить болт на app.config, я и дописал функцию SetUserOverride(). Она берет значение указанное пользователем и переписывает значение connectionString, подставляя туда путь к БД(runtime) вместо прописанного в designermode. А чтобы пользователь не писал путь в БД и ее имя в ручную добавляем в PropertuGrid кнопочку с точечками, которая откроет OpenFileDialog для выбора файла БД. Для этого свойству DataBase() добавим аттрибут
Для которого напишем следующий класс Editor
Вот таким образом я решил эту проблемку. Да маленькое замечание. Класс Settings.Designer.vb сгенерирован студией, и если вы после всех внесенных в него изменений за каким то лядом полезете во вкладку Settings свойств проекта и что-то там поменяете, то студия сгенерит этот класс по новой и все ваши труды пропадут. А по сему сначала думаем, а потом делаем. Или пишем добавки в этому классу в класс Settings.vb это Partial класс - вторая половинка класса Settings.Designer.vb. Успехов. ![]() Надеюсь инфа пригодиться в том или ином случае. ![]() Это сообщение отредактировал(а) thomas - 11.11.2007, 11:54 -------------------- Крепко жму горло, искренне ваш Thomas. (С)vingrad Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну! Проблемы негров шерифа не волнуют. |
||||||||
|
|||||||||
vasjon |
|
|||
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 26.9.2007 Репутация: нет Всего: нет |
спасибо конечно, но я знаю только C#... в VB могу легкие примеры понять... но вот какой вопрос, а изменить значения в app.config программно я так понимаю нельзя ?
|
|||
|
||||
thomas |
|
|||
![]() Доцент... почти ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1385 Регистрация: 3.10.2006 Где: " Сказочное королевство" Репутация: 6 Всего: 65 |
vasjon,
Привет.
По идее нет, но если очень хочеться то можно попробовать "танцы с бубнами". App.config это xml файл. Соответственно используя классы и методы из пространства имен System.XML можно читать и записывать данные из/в xml-файлы. Разница между синтаксисом VB и C# конечно есть, но суть то одна и таже. Используя вкладку Settings свойст твоего проекта ты получишь сгенерированный студией файл аналогичный Settings.Designer.vb, но только уже в C#. Добавь туда же нужные тебе аттрибуты свойств класса, допиши простую функцию и напиши коротенький класс для Editor. И всё, дело в шляпе. -------------------- Крепко жму горло, искренне ваш Thomas. (С)vingrad Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну! Проблемы негров шерифа не волнуют. |
|||
|
||||
1stain |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 486 Регистрация: 30.7.2007 Где: Киев - Харьков Репутация: 3 Всего: 40 |
что-то я не совсем понял про танцы с бубном вокруг app.config...
насколько я понимаю, он отражается в program_name.exe.config, который программно можно прочитать через ConfigurationManager, модифицировать что надо и записать. примерно так: Присоединённый файл ( Кол-во скачиваний: 13 ) ![]() -------------------- Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein) ![]() |
|||
|
||||
vasjon |
|
|||
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 26.9.2007 Репутация: нет Всего: нет |
1stain то что надо, спасибо.
А добавлять новые ключи в этот файл можно ? И еще я только начинаю изучать C# не могли бы пояснить:
|
|||
|
||||
thomas |
|
|||
![]() Доцент... почти ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1385 Регистрация: 3.10.2006 Где: " Сказочное королевство" Репутация: 6 Всего: 65 |
vasjon,
Это означает что обьект connStrings имеет тип List<ConnectionStringSettings> где List является списком обьектов типа ConnectionStringSettings -------------------- Крепко жму горло, искренне ваш Thomas. (С)vingrad Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну! Проблемы негров шерифа не волнуют. |
|||
|
||||
vasjon |
|
|||
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 26.9.2007 Репутация: нет Всего: нет |
и вам спасибо добрый человек
![]() Добавлено через 5 минут и 1 секунду а добавление ключей программно возможно ? |
|||
|
||||
1stain |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 486 Регистрация: 30.7.2007 Где: Киев - Харьков Репутация: 3 Всего: 40 |
все можно добавь к процедуре клика по Ok перед записью конфига такое:
з.ы. и такое
и посмотри файл WindowsApplication1.exe.config Это сообщение отредактировал(а) 1stain - 12.11.2007, 16:45 -------------------- Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein) ![]() |
||||
|
|||||
thomas |
|
|||
![]() Доцент... почти ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1385 Регистрация: 3.10.2006 Где: " Сказочное королевство" Репутация: 6 Всего: 65 |
1stain,
Привет. Посмотрел твой пример. После выполнения програмки с изменением БД в списке, открываю WindowsApplication1.exe.config, а там как был LocalSqlServer так и остался. ![]() Добавлено через 1 минуту и 49 секунд И потом если vasjon, использует VS 2005, то надо бы использовать новые возможности, а не методы из FW 1.1. -------------------- Крепко жму горло, искренне ваш Thomas. (С)vingrad Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну! Проблемы негров шерифа не волнуют. |
|||
|
||||
vasjon |
|
|||
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 26.9.2007 Репутация: нет Всего: нет |
спасибо за помощь
у меня кстати все работает из примера 1stain студия 2005, но вкладку Settings я так и не нашел Это сообщение отредактировал(а) vasjon - 12.11.2007, 17:01 |
|||
|
||||
1stain |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 486 Регистрация: 30.7.2007 Где: Киев - Харьков Репутация: 3 Всего: 40 |
ты "Ок" жмакал? открываешь именно WindowsApplication1.exe.config тот который рядом с экзешником лежит?
не путать с WindowsApplication1.vshost.exe.config и уж тем более не путать с App.config ![]() Добавлено через 7 минут и 7 секунд
![]()
это все из MSDN кроме того, если мне будет удобнее, то я буду юзать хоть ассемблер (даже притом, что йа его не знайу ![]() Это сообщение отредактировал(а) 1stain - 12.11.2007, 16:59 -------------------- Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein) ![]() |
||||||||
|
|||||||||
thomas |
|
|||
![]() Доцент... почти ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1385 Регистрация: 3.10.2006 Где: " Сказочное королевство" Репутация: 6 Всего: 65 |
vasjon,
В SolutionExplorer жми правой кнопкой по названию аликации, в контекстном меню в самом низу выбираем Properties. Открывается окно со свойствами проекта, слева вкладки(расположены вертикально). -------------------- Крепко жму горло, искренне ваш Thomas. (С)vingrad Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну! Проблемы негров шерифа не волнуют. |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | .NET для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |