Редактирование app.config во время выполнения с использованием того же приложения - PullRequest
1 голос
/ 13 января 2011

У меня есть приложение Windows Forms VS 2008 - C #, которое использует app.config.

Во время выполнения в пункте меню моего приложения я хочу отредактировать значения app.config, сохранить его и перезапустить приложение.

любой пример исходного кода, любые хорошие образцы и практики ??

редактирование:

на форумах MSDN, Жан Поль, VA:

  1. Создайте приложение тестовых окон Windows и добавьте в него файл app.config.

  2. Добавить ссылку на System.confguration

  3. Добавить ключ с именем "font" в appSettings со значением "Verdana"

  4. Поместите кнопку в форму и нажмите на нее, чтобы добавить код модификации.

        System.Configuration.Configuration configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
    
        configuration.AppSettings.Settings.Remove("font");
        configuration.AppSettings.Settings.Add("font", "Calibri");
    
        configuration.Save(ConfigurationSaveMode.Modified);
    
        ConfigurationManager.RefreshSection("appSettings");
    

что вы думаете об этом?

Ответы [ 4 ]

1 голос
/ 13 января 2011

Я не думаю, что вы можете записать файл конфигурации во время выполнения - он может быть доступен только для чтения, однако может быть способ обойти это, переписав файл (с необходимыми изменениями по мере необходимости) ипо сути, заменив существующее, а затем, перезапустив приложение, чтобы загрузить новые значения (я очень сомневаюсь, что это желательно, и лично я бы не стал пытаться использовать эту малярию).в файле настроек, которыми легко манипулировать таким образом.

Чтобы использовать настройки, сначала давайте предположим, что у вас есть файл Settings.settings (если нет, то создайте его: Добавить элемент-> Файл настроек), затем мы имеемнастроенный параметр с именем MyUnicornsName;Чтобы внести изменения и сохранить их, вы можете просто сделать следующее:

Settings.Default.MyUnicornsName = "Lucifers Spawn";
Settings.Default.Save();

Аналогично, чтобы прочитать настройку:

ATextDisplayControl.Text = Settings.Default.MyUnicornsName

Если вы не знаете, VisualStudio откроет редактор настроек при открытии / двойном щелчке файла настроек в IDE;С помощью этого интерфейса вы можете добавлять и редактировать ваши начальные настройки и их значения, и string - не единственное поддерживаемое значение, можно использовать все примитивы и, насколько я знаю, любое сериализуемое значение.

0 голосов
/ 13 января 2011

Ну, на самом деле свойства в App.config доступны только для чтения, поэтому вы не можете это сделать.

Но есть хитрость ............................

В файле Settings.cs создайте общедоступную функцию или метод, чтобы ее можно было использовать с Properties.settings

, и напишите следующий код..

    public void ChangeProperty(string propertyname, string value)
    {
        this[propertyname] = value;
    }

не забудьте передать точную строку имени свойства методу.или лучше создать свойство Writeonly для параметра.

update

здесь приведен код для настройки в качестве свойства, в качестве примера я беру строку подключения,это может быть что угодно.помните, что сохраненное свойство имеет тип Object, поэтому вы можете создать свойство, специфичное для этого ..

    public string MyCustomConnectionstring
    {
        set
        {
            //replace the string with your connection string otr what ever setting you want to change
            this["myConnectionString"] = value;
        }
    }

Теперь вы можете легко использовать это свойство для изменения ConnectionString во время выполнения ...

0 голосов
/ 13 января 2011

Используйте Project-> Properties-> Settings для таких вещей.

0 голосов
/ 13 января 2011

Есть ли причина, по которой вы не можете использовать обычные свойства auto-gen'd Properties.Settings для хранения измененных данных в файле настроек?Замечательно, что вы знаете, что вы изменяете, поэтому вам даже не нужно перезапускать приложение!

Использование настроек в C #

Доступ к настройкам во время выполненияэто так же просто, как:

this.BackColor = Properties.Settings.Default.myColor;

(Нет хорошего шаблона для изменения самого app.config, просто потому что он предназначен для чтения только в этом контексте с настройками опытного пользователя.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...