Как прочитать AppSettings из app.config в WinForms

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

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
   <add key="Scenario1.doc" value="Hybrid1"/>
   <add key="Scenario2.doc" value="Hybrid2"/>
   <add key="Scenario3.doc" value="Hybrid3"/>
</appSettings>
</configuration>

это сработает? как восстановить данные?


person John Ryann    schedule 04.10.2012    source источник


Ответы (2)


Прямо из документов :

using System.Configuration;

// Get the AppSettings section.        
// This function uses the AppSettings property
// to read the appSettings configuration 
// section.
public static void ReadAppSettings()
{
  try
  {
    // Get the AppSettings section.
    NameValueCollection appSettings = ConfigurationManager.AppSettings;

    // Get the AppSettings section elements.
    Console.WriteLine();
    Console.WriteLine("Using AppSettings property.");
    Console.WriteLine("Application settings:");

    if (appSettings.Count == 0)
    {
      Console.WriteLine("[ReadAppSettings: {0}]",
      "AppSettings is empty Use GetSection command first.");
    }
    for (int i = 0; i < appSettings.Count; i++)
    {
      Console.WriteLine("#{0} Key: {1} Value: {2}",i, appSettings.GetKey(i), appSettings[i]);
    }
  }
  catch (ConfigurationErrorsException e)
  {
    Console.WriteLine("[ReadAppSettings: {0}]", e.ToString());
  }
}

Итак, если вы хотите получить доступ к настройке Scenario1.doc, вы должны сделать это:

var value = ConfigurationManager.AppSettings["Scenario1.doc"];

Редактировать:

Как сказал Габриэль GM в комментариях, вам нужно будет добавить ссылку на System.Configuration.

person Gromer    schedule 04.10.2012
comment
Если вы не видите ConfigurationManager, попробуйте добавить system.configuration к своим ссылкам на проект. - person Gabriel GM; 06.10.2014

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

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

<add key="FileDropDown" value="File1-Value|File2-Value" />

и напишите код C#, чтобы получить этот параметр ConfigurationManager.AppSettings["FileDropDown"], и выполните несколько разбиений строк ('|') и ('-'), чтобы создать коллекцию kvp и привязать ее к пользовательскому интерфейсу.

person Pavan Josyula    schedule 09.10.2014