点击按钮

时间:2015-12-29 07:20:01

标签: c# winforms resx

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

text_box1:姓名
text_box2:值
text_box3:评论
以及一个名为Save的按钮。

我能够在资源文件中保存数据,但不能以我想要的方式保存。它保存在下一行的每个值中,但我希望Name位于Name列下,value应该在列下,与注释相同。

按钮点击的代码:

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个值连续追加到新行中。

1 个答案:

答案 0 :(得分:2)

尝试使用 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);
    }
}