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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.08.2012, 11:49   #1
Mixim
Форумчанин
 
Регистрация: 29.10.2009
Сообщений: 259
Вопрос Сохранение пользовательских настроек

Не знаю получу ли помощи, но все же попробую. Пишу программу в MonoDevelop под Gtk#, в которой необходимо предоставить пользователю возможность сохранять настройки (логин/пароль/адрес сервера и т.д.). В Visual Studio, не мудурствуя лукаво, просто добавил бы параметры приложения и работал бы с ними как с обычными переменными, незабывая сохранять перед выходом из программы, но в MonoDevelop ничего похожего найти не удалось. Да, можно в проекте создать файл "app.config", без проблем работать с ним с помощью класса System.Configuration.ConfigurationM anager, но сохранять настройки нельзя (или я чего-то не понимаю). Например, добавляю в проект указанный файл со следующим содержимым:
Код:
<?xml version="1.0" encoding="utf-8"?>
<configuration>

 <appSettings>

    <add key="Login" value="MyLogin" />
    <add key="Password" value="MyPassword" />
		
 </appSettings>
		
</configuration>
Без проблем обращаюсь к этим настройкам из кода:
Код:
	protected void OnButton1Clicked (object sender, System.EventArgs e)
	{		
		//обращение по индексу
		string str1=ConfigurationManager.AppSettings[0];
		//обращение по имени(по ключу)
		string str2=ConfigurationManager.AppSettings["Password"];
		
	}
Но как теперь задать новые значения для указанных параметров в конфигруационном файле? Где-то на StackOverflow нашел аналогичный вопрос с предложением решить проблему следующим образом:
Код:
	try
	{			
		string appPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);          
		string configFile = System.IO.Path.Combine(appPath, "app.config");
		ExeConfigurationFileMap configFileMap = new ExeConfigurationFileMap();         
		configFileMap.ExeConfigFilename = configFile;          
		System.Configuration.Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configFileMap, ConfigurationUserLevel.None);

		config.AppSettings.Settings["Password"].Value = "New Value"; 
		config.Save();
			
	}
	catch(Exception ex)
	{
		MessageDialog md=new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, false, "{0}", ex.Message);
		md.ShowNow();
	}
Попробовал запустить через отладчик, но на строке:
Код:
	System.Configuration.Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configFileMap, ConfigurationUserLevel.None);
программа вылетела, даже не зайдя в обработчик исключительной ситуации.
В принципе, понятно почему не удается сохранить таким образом настройки(MS не рекомендуют так делать, хотя если верить некоторым отчетам у самих полно такого кода), но какая взаимосвязь между MonoProject и Microsoft и если так нельзя, то как можно?
На сайте MonoProject не нашел никаких пояснений по поводу сохранения пользовательских настроек, поэтому решил немного почитать MSDN по работе с System.Configuration.ConfigurationM anager(если правильно понимаю, Gtk#/Mono предоставляет полный его аналог, который и использую), но про сохранение опять таки ни слова.
Может кто сталкивался с такой проблемой, как решали?
Из всех классических книг, посвященных программированию, ненавижу всего одну - русский перевод книги Роберта Седжвика-"Фундаментальные алгоритмы C++". Предпочитаю читать её в оригинале.
Mixim вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сохранение настроек программ Булан Юра Общие вопросы Delphi 5 17.03.2012 14:35
Сохранение настроек - ? Evgenii Общие вопросы Delphi 3 03.07.2009 14:43
Сохранение настроек blackstersl Общие вопросы Delphi 3 21.12.2008 12:37
Сохранение настроек Delphi Air Помощь студентам 3 22.12.2007 23:19