2015-12-30 68 views
0

我想在窗體中單擊按鈕時在資源文件中現有數據的末尾添加數據。 我有3個文本框窗形式 - 爲按鈕在資源文件中的現有數據的末尾添加數據

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

代碼:

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

法在資源文件中添加數據:

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

請幫我在這個問題上在資源文件中添加數據是因爲使用此代碼我的數據被現有數據覆蓋,但我希望我的數據應附加在現有數據的末尾。 此代碼給我異常的同時也使用IDictionaryEnumerator的例外是:

System.InvalidOperationException

回答

1

這是一個片段,一個新的行添加到您的resx並保留舊記錄:

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

這將重新編寫舊線並添加新線。

+0

感謝您的幫助 – VIVEK

+0

我已經使用此代碼,但與此代碼我的評論已刪除形式上一個條目。 – VIVEK

+0

我認爲當您嘗試從閱讀器使用相同的文件創建一個作家時,這會引發異常。 – rdongart

相關問題