在另一个表单上加载/编辑和保存XML数据

时间:2013-07-21 15:53:51

标签: c# winforms datagridview

目前我的应用程序看起来像这样:

它将数据从am XML文件读入数据集,然后设置数据源以适应此数据网格

当用户点击一行时,Notes部分中的数据显示在

下面的文本框中

enter image description here

当用户单击Notes按钮时,它们将被带到一个新表单form2,其中来自notes文本框的数据将被带入一个新的文本框。我希望能够做的是能够在表单2上的Notes文本框中输入新文本,然后当用户单击确定时保存到数据网格

完全相同:http://youtu.be/mdMjMObRcSk?t=28m41s

enter image description here

目前我所拥有的OK按钮的代码如下所示,我得到以下错误,因为我没有在该窗体上写过关于datagridview1的任何内容。

我想知道如何从文本框中获取用户输入并“更新”XML文件,以便使用新的Notes更新数据网格

enter image description here

我不确定这段代码是否有用,但这就是我将datagridview1_cellcontentclick链接到form1下面的文本框的方式,我想我需要重新使用新表单上的最后一行来覆盖数据,但我是不确定

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 个答案:

答案 0 :(得分: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.