在两个窗体之间传递数据网格中的数据

本文关键字:数据 数据网 网格 之间 窗体 两个 | 更新日期: 2023-09-27 18:23:46

我有两种形式,比如Form1和Form2。我有两个字段文件名、文件路径和一个按钮,单击后会进入Form 2。表单2有一个数据网格,它有文件名和文件路径,还有一个OK按钮。如果Form1中的行已经有了文件路径和文件名,那么它应该在Form2中填充,如果我在Form2中操作该数据并单击"确定"按钮,那么数据应该在Form1中更新。由于我是C#的新手,我发现这有点难做。你能给我一些关于如何解决这个问题的建议吗?

在两个窗体之间传递数据网格中的数据

粗略(不推荐)的方法是将两个数据网格视图设置为"Public"。然后,当您退出一个数据网格上的单元格时,您会检查它是否"脏",如果是,则处理两个网格的更新。如果一个表单是从另一个表单启动的,则一个更新将读取此内容。ParentForm.dgFileNames.Rows…,另一个是这个.frmSubrdinated.dgFileName:Rows…

一个更好的方法是在两个表单上都有公共方法,并在每次更新一个网格上的行时调用另一个表单的相应更新方法。

实际上,每个表单都应该为调用其他表单方法的添加和更新定义用户定义的事件。这假设在网格中输入更新的情况下,这两个表单总是打开的。这涉及到为将通过事件传递的eventData定义接口和基类。

使用Form的Modal结果可以很容易地实现这一点。

理想情况下,你的Form2应该是这样的:

public partial class Form2 : Form
{
private string _currentValue;
//Property to get value from Form1
public string CurrentValue
{
    get { return _currentValue; }
    set { _currentValue = value; }
}
public Form2()
{
    InitializeComponent();
    //set the dialog result to be as OK when button is clicked
    button1.DialogResult = System.Windows.Forms.DialogResult.OK;
}
public string getSelectedValue()
{ 
    return dataGridView1[<the field name you need to get>, dataGridView1.CurrentRow.Index].Value.ToString();
}
}

在Form1中,将其称为:

Form2 form2 = new Form2();
form2.CurrentValue = <Your Value from Form1>;
If (form2.DialogResult() == DialogResult.OK)
{
textBox1.Text = form2.getSelectedValue();
}