Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > .NET для новичков > где хранить имя файла |
Автор: vasjon 11.11.2007, 10:59 |
Собираюсь сделать возможность открывать (выбирать) файл БД через openFileDialog, примерно представляю как я это сделаю, но вижу проблему: где сохранять (хранить) имя последнего открытого файла (выбраного) файла БД ? В файле ? В конфиграционном файле ? Если можно пример кода для сохраненния имени и востановления его. |
Автор: thomas 11.11.2007, 11:48 | ||||||||
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. Успехов. ![]() Надеюсь инфа пригодиться в том или ином случае. ![]() |
Автор: vasjon 11.11.2007, 17:56 |
спасибо конечно, но я знаю только C#... в VB могу легкие примеры понять... но вот какой вопрос, а изменить значения в app.config программно я так понимаю нельзя ? |
Автор: thomas 11.11.2007, 23:27 | ||
vasjon, Привет.
По идее нет, но если очень хочеться то можно попробовать "танцы с бубнами". App.config это xml файл. Соответственно используя классы и методы из пространства имен System.XML можно читать и записывать данные из/в xml-файлы. Разница между синтаксисом VB и C# конечно есть, но суть то одна и таже. Используя вкладку Settings свойст твоего проекта ты получишь сгенерированный студией файл аналогичный Settings.Designer.vb, но только уже в C#. Добавь туда же нужные тебе аттрибуты свойств класса, допиши простую функцию и напиши коротенький класс для Editor. И всё, дело в шляпе. |
Автор: 1stain 12.11.2007, 00:31 |
что-то я не совсем понял про танцы с бубном вокруг app.config... насколько я понимаю, он отражается в program_name.exe.config, который программно можно прочитать через ConfigurationManager, модифицировать что надо и записать. примерно так: |
Автор: vasjon 12.11.2007, 15:33 | ||
1stain то что надо, спасибо. А добавлять новые ключи в этот файл можно ? И еще я только начинаю изучать C# не могли бы пояснить:
|
Автор: thomas 12.11.2007, 15:54 |
vasjon, Это означает что обьект connStrings имеет тип List<ConnectionStringSettings> где List является списком обьектов типа ConnectionStringSettings |
Автор: vasjon 12.11.2007, 15:57 |
и вам спасибо добрый человек ![]() Добавлено через 5 минут и 1 секунду а добавление ключей программно возможно ? |
Автор: 1stain 12.11.2007, 16:37 | ||||
все можно добавь к процедуре клика по Ok перед записью конфига такое:
з.ы. и такое
и посмотри файл WindowsApplication1.exe.config |
Автор: thomas 12.11.2007, 16:54 |
1stain, Привет. Посмотрел твой пример. После выполнения програмки с изменением БД в списке, открываю WindowsApplication1.exe.config, а там как был LocalSqlServer так и остался. ![]() Добавлено через 1 минуту и 49 секунд И потом если vasjon, использует VS 2005, то надо бы использовать новые возможности, а не методы из FW 1.1. |
Автор: vasjon 12.11.2007, 16:56 |
спасибо за помощь у меня кстати все работает из примера 1stain студия 2005, но вкладку Settings я так и не нашел |
Автор: thomas 12.11.2007, 17:23 | ||
vasjon,
В SolutionExplorer жми правой кнопкой по названию аликации, в контекстном меню в самом низу выбираем Properties. Открывается окно со свойствами проекта, слева вкладки(расположены вертикально). |