Загрузка/редактирование и сохранение XML-данных в другой форме

на данный момент у меня есть приложение, которое выглядит так:

Он считывает данные из XML файла am в набор данных, а затем устанавливает источник данных для вставки в этот datagrid

Когда пользователь нажимает на строку, данные в разделе "Заметки" отображаются в текстовом поле ниже

Когда пользователь нажимает кнопку "Заметки", они переносятся в новую форму form2, где данные из текстового поля примечаний переносятся в новое текстовое поле. Я хочу, чтобы иметь возможность вводить новый текст в текстовое поле Notes в форме 2, а затем, когда пользователь нажимает кнопку ОК, он сохраняет значение в datagrid

точно так же: http://youtu.be/mdMjMObRcSk?t=28m41s

Код, который у меня есть на данный момент для кнопки OK, приведен ниже, и я получаю следующую ошибку, потому что я ничего не писал о datagridview1 в этой форме.

Я хотел бы знать, как получить пользовательский ввод из текстового поля и "обновить" XML файл, чтобы обновить datagrid новыми нотами

Я не уверен, поможет ли этот код, но так я связал datagridview1_cellcontentclick с текстовым полем ниже в форме1, я думаю, мне нужно повторно использовать последнюю строку в новой форме для перезаписи данных, но я не уверен

if (e.RowIndex >= 0)
 {
 DataGridViewRow row = this.dataGridView1.Rows[e.RowIndex];
 //The data in the cells for the Notes Column turns into a string and is copied to the textbox below
 textBox1.Text = row.Cells["somenotes"].Value.ToString();

спасибо за любую помощь!

1 ответ

Я думаю, что ваша проблема связана с контактом между формами (очень простая проблема). Вы должны рассматривать form2 как диалог, в form1, вы показываете это следующим образом:

//textBox1 is on your form1
if(form2.ShowDialog(textBox1.Text) == DialogResult.OK){
 dataGridView1.Rows[dataGridView1.CurrentCellAddress.Y].Cells["somenotes"].Value = form2.Notes;
 //perform your update to xml normally
 //.....
}
//your Form2
public class Form2 : Form {
 public Form2(){
 InitializeComponent();
 }
 public string Notes {get;set;}
 public DialogResult ShowDialog(string initText){
 //suppose textBox is on your form2.
 textBox.Text = initText;
 return ShowDialog();
 }
 private void OKButton_Click(object sender, EventArgs e){
 Notes = textBox.Text;
 DialogResult = DialogResult.OK;
 }
 private void CancelButton_Click(object sender, EventArgs e){
 DialogResult = DialogResult.Cancel;
 }
}
//form2 is defined in your Form1 class.

licensed under cc by-sa 3.0 with attribution.