2015-12-29 2 views
1

Я хочу добавить данные в файл ресурсов нажатием кнопки в форме окна.
У меня есть окна образуют с 3 текстовыми полями -Добавить данные в файл ресурсов (.resx) по нажатию кнопки

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 значения в строке не в новой строке.

ответ

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); 
    } 
} 
+0

Спасибо за помощь – VIVEK

+0

Эй @Yeldar Курмангалии, мне нужна еще одна помощи вам, что всякий раз, когда я толкание/дописать данные в файле Resx это перезаписать мой существующие данные так, не могли бы вы рассказать мне, что мне делать в этом случае? – VIVEK

+0

@VIVEKJAIN Вам нужно использовать 'ResXResourceReader', чтобы читать все ресурсы, хранить их в' List' или что-то подобное, добавить свой 'ResXDataNode' и сохранить его с помощью' ResXResourceWriter'. Кстати, установка 'UseResXDataNodes' в true может упростить. Попробуй :) –