2012-10-04 17 views
6

Zwykle używam pliku tekstowego jako konfiguracji. Ale tym razem chciałbym wykorzystać app.config skojarzyć nazwę pliku (key) z nazwą (wartość) i uczynić nazwy dostępnych w polu kombiC# app.config in winform

<?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> 

to będzie działać? jak odzyskać dane?

Odpowiedz

11

Prosto z docs:

// 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()); 
    } 
} 

Tak więc, jeśli chcesz uzyskać dostęp do zachodzące Scenario1.doc, to byłoby to zrobić:

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

Edit:

Gabriel GM powiedział w komentarzach, będziesz musiał dodać odniesienie do System.Configuration.

+0

Używam .NET 4.0 –

+1

Co napisałem działa w wersji 2.0 ** + **. – Gromer

+9

Jeśli nie widzisz 'ConfigurationManager', spróbuj dodać' system.configuration' do referencji projektu. –

0

Ustawienia aplikacji w app.config mają przechowywać ustawienia specyficzne dla aplikacji/środowiska, aby nie przechowywać danych wiążących się z interfejsem użytkownika.

Jeżeli nie można uniknąć zapisywania w konfiguracji z powodu dziwnych wniosków biznesowych wolałbym trzymać się jednym ustawieniu

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

i napisać kod C#, aby to ustawienie ConfigurationManager.AppSettings["FileDropDown"] i zrobić kilka Dzieli String („|”) i ('-'), aby utworzyć kolekcję kvp i powiązać ją z interfejsem użytkownika.