【问题标题】:Add data in resource file(.resx) on the click of button单击按钮在资源文件(.resx)中添加数据
【发布时间】:2015-12-29 07:20:01
【问题描述】:

我想在 Windows 窗体中单击按钮在资源文件中添加数据。
我有一个带有 3 个文本框的窗体 -

text_box1:名称
text_box2:值
text_box3:评论
和一个名为 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)
    {

        ResXResourceWriter resxWriter;
        try
        {
            resxWriter = new ResXResourceWriter(@"D:\Validator_Tool\resx\resx\myres.resx");
            resxWriter.AddResource("Name", myName);
            resxWriter.AddResource("Value",myValue);
            resxWriter.AddResource("Comment", myComment);
            resxWriter.Close();

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

请帮我将这 3 个值追加到一行而不是新行中。

【问题讨论】:

    标签: c# winforms resx


    【解决方案1】:

    尝试使用 ResXDataNode

    名称和值可以传递给它的构造函数之一:

    public ResXDataNode(string name, object value)
    

    可以通过Comment属性设置评论。

    在这种情况下使用对象初始化器很方便:

    public static void Create(string myName, string myValue, string myComment)
    {
        ResXResourceWriter resxWriter;
        try
        {
            resxWriter = new ResXResourceWriter(@"D:\Validator_Tool\resx\resx\myres.resx");
    
            // --- Use this if it looks more readable and convenient ---
            // var node = new ResXDataNode(myName, myValue);
            // node.Comment = myComment;
            // resxWriter.AddResource(node);
    
            resxWriter.AddResource(new ResXDataNode(myName, myValue)   
            {
                Comment = myComment
            });
    
            resxWriter.Close();
        }
        catch (FileNotFoundException caught)
        {
            MessageBox.Show("Source: " + caught.Source + " Message: " + caught.Message);
        }
    }
    

    【讨论】:

    • 嘿@Yeldar Kurmangaliyev,我需要更多帮助,每当我在 resx 文件中推送/追加数据时,它都会覆盖我现有的数据,请问在这种情况下我应该怎么做?
    • @VIVEKJAIN 您需要使用ResXResourceReader 读取所有资源,将其存储在List 或类似的位置,附加您的ResXDataNode,并使用ResXResourceWriter 保存它。顺便说一句,将UseResXDataNodes 设置为true 可以使其更简单。试试看:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-05
    • 1970-01-01
    • 1970-01-01
    • 2012-05-06
    • 1970-01-01
    • 1970-01-01
    • 2016-04-09
    相关资源
    最近更新 更多