我想在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
答案 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();
这将重写您的旧行并添加新行。