在资源文件中的现有数据末尾添加数据

时间:2015-12-30 07:30:11

标签: c# winforms resx

我想在Windows窗体中单击按钮的资源文件中的现有数据末尾添加数据。 我有一个带有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 个答案:

答案 0 :(得分:3)

这是一个片段,用于向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();

这将重写您的旧行并添加新行。