2016-01-08 1 views
0

J'ai un fichier .resx contient des paires de valeurs de nom de chaîne. Maintenant, je veux obtenir le nom et la paire de valeurs dans une liste en utilisant pragmatiquement C# (Windows Forms). Comment puis-je y parvenir? mais voici une torsion dans la réalisation de la valeur dans une liste, j'ai une "zone de liste déroulante" et deux zones de texte. Au moment de l'exécution, toutes les clés doivent être ajoutées dans la zone de liste déroulante et automatiquement remplir deux autres cases de test avec Valeur et commentaire. S'il vous plaît aidez-moi dans cette tâche. Merci à l'avance ...Lire clé, la valeur et le commentaire à partir des ressources dans un fichier .resx

+0

Que voulez-vous dire par « dans une liste que j'ai une « boîte Combo » et deux zones de texte »? S'il vous plaît clarifier votre question et si possible poster un code. :) – LucaMus

+0

Salut @LucaMus je veux ajouter toutes les clés dans la liste déroulante et correspondant à chaque clé une valeur et un commentaire présents dans le fichier resx. Je veux quand je sélectionne une clé via comboBox la valeur et le commentaire de cette clé apparaissent automatiquement dans le textBox1 avec valeur et textbox2 avec commnet – VIVEK

Répondre

1

Jetez un oeil à ResXResourceReader, cela peut facilement faire ce que vous essayez de faire.

Par exemple, vous pouvez faire quelque chose comme:

private void Form1_Load(object sender, EventArgs e) 
    { 
     //ComboBox will use "Name" property of the items you add 
     comboBox1.DisplayMember = "Name"; 
     //Create the reader for your resx file 
     ResXResourceReader reader = new ResXResourceReader("C:\\your\\file.resx"); 
     //Set property to use ResXDataNodes in object ([see MSDN][2]) 
     reader.UseResXDataNodes = true; 
     IDictionaryEnumerator enumerator = reader.GetEnumerator(); 

     while (enumerator.MoveNext()) 
     { //Fill the combobox with all key/value pairs 
      comboBox1.Items.Add(enumerator.Value); 
     } 
    } 

    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     if (comboBox1.SelectedIndex == -1) 
      return; 

     //Assembly is used to read resource value 
     Assembly currentAssembly = Assembly.GetExecutingAssembly(); 
     //Current resource selected in ComboBox 
     ResXDataNode node = (ResXDataNode)comboBox1.SelectedItem; 

     //textBox2 contains the resource comment 
     textBox2.Text = node.Comment; 
     //Reading resource value, you can probably find a smarter way to achieve this, but I don't know it 
     object value = node.GetValue(new AssemblyName[] { currentAssembly.GetName() }); 
     if (value.GetType() != typeof(String)) 
     { //Resource isn't of string type 
      textBox1.Text = ""; 
      return; 
     } 

     //Writing string value in textBox1 
     textBox1.Text = (String)value; 
    }