2015-12-30 1 views
0

Je veux ajouter des données à la fin des données existantes dans le fichier de ressources sur le clic du bouton dans le formulaire Windows. J'ai une forme de fenêtres avec 3 zones de texte -Ajouter les données à la fin des données existantes dans le fichier de ressources

text_box1: Name 
text_box2: Value 
text_box3: Comments 
and a button named as Save. 
Code

pour le bouton:

private void button1_Click(object sender, EventArgs e) 
     { 
      myMethod.Create(textBox1.Text, textBox2.Text, textBox3.Text); 
     } 

Méthode pour ajouter des données dans le fichier de ressources:

public class myMethod 
    { 
     public static void Create(string myName, string myValue, string myComment) 
     { 
      try 
      { 
       ResXResourceReader resxReader = new ResXResourceReader(@"D:\Validator_Tool\resx\resx\myres.resx"); 
       resxReader.UseResXDataNodes = true; 
       IDictionaryEnumerator data = resxReader.GetEnumerator(); 

      while (data.MoveNext()) 
      { 
       ResXResourceWriter resxWriter = new ResXResourceWriter(@"D:\Validator_Tool\resx\resx\myres.resx"); 
       var node = new ResXDataNode(myName, myValue); 
       node.Comment = myValue; 
       resxWriter.AddResource(node); 
       resxWriter.Close(); 
      } 

      } 
      catch (FileNotFoundException caught) 
      { 
       MessageBox.Show("Source: " + caught.Source + " Message: " + caught.Message); 
      } 
     } 
    } 

S'il vous plaît aidez-moi à ce problème pour ajouter des données dans un fichier de ressources, car avec ce code mes données sont écrasées avec des données existantes mais je veux que mes données s'ajoutent à la fin des données existantes. Ce code me donner exception trop en utilisant exception IDictionaryEnumerator est:

System.InvalidOperationException

Répondre

1

Ceci est un extrait, d'ajouter une nouvelle ligne à votre resx et de garder les vieux disques:

var reader = new ResXResourceReader("filename"); 
var node = reader.GetEnumerator(); 
var writer = new ResXResourceWriter("filename"); 
while (node.MoveNext()) 
{ 
    writer.AddResource(node.Key.ToString(), node.Value.ToString()); 
} 
var newNode = new ResXDataNode("name", "value"); 
writer.AddResource(newNode); 
writer.Generate(); 
writer.Close(); 

Cela va réécrire vos anciennes lignes et ajouter votre nouvelle ligne.

+0

Merci pour l'aide – VIVEK

+0

J'ai utilisé ce code mais avec ce code mon commentaire a été supprimé du formulaire précédent. – VIVEK

+0

Je pense que cela déclencherait une exception si vous essayez de créer un script à partir du même fichier que celui utilisé par le lecteur. – rdongart