2012-10-04 14 views
6

Di solito uso un file di testo come configurazione. Ma questa volta vorrei utilizzare app.config per associare un nome di file (chiave) con un nome (valore) e rendere i nomi disponibili nella casella combinataC# 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> 

sarà questo lavoro? come recuperare i dati?

risposta

11

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

Quindi, se si desidera accedere alla impostazione Scenario1.doc, si dovrebbe fare questo:

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

Edit:

Come Gabriel GM detto nei commenti, dovrai aggiungere un riferimento a System.Configuration.

+0

Sto usando .NET 4.0 –

+1

Ciò che ho pubblicato funziona in 2.0 ** + **. – Gromer

+9

Se non vedi 'ConfigurationManager', prova ad aggiungere' system.configuration' ai riferimenti del tuo progetto. –

0

le impostazioni dell'app in app.config devono memorizzare le impostazioni specifiche dell'applicazione/ambiente per non memorizzare i dati che si collegano all'interfaccia utente.

Se non potete evitare di memorizzare in config a causa di richieste di business strane avrei preferito attenersi a una sola impostazione

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

e scrivere il codice C# per ottenere questa impostazione ConfigurationManager.AppSettings["FileDropDown"] e fare un po 'Divide stringa ('|') e ('-') per creare la raccolta kvp e collegarla all'interfaccia utente.