【问题标题】:Add data at the end of existing data in resource file在资源文件中现有数据的末尾添加数据
【发布时间】:2015-12-30 07:30:11
【问题描述】:

我想在单击 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

【问题讨论】:

    标签: c# winforms resx


    【解决方案1】:

    这是一个 sn-p,在你的 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();
    

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

    【讨论】:

    • 我已经使用了这段代码,但是使用这段代码,我的评论从之前的条目中删除了。
    • 我认为当您尝试从与阅读器使用的文件相同的文件中创建编写器时,这会引发异常。
    猜你喜欢
    • 1970-01-01
    • 2022-11-25
    • 2014-08-27
    • 1970-01-01
    • 2011-04-28
    • 2017-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多