0

我有两种形式,分别是 Form1 和 Form2。我有两个字段文件名、文件路径和一个按钮,单击该按钮将显示为 Form 2。表单 2 有一个数据网格,其中有文件名和文件路径以及一个确定按钮。如果 Form1 中的行已经有文件路径和文件名,它应该填充到表单 2 中,如果我在 Form2 中操作该数据并单击确定按钮,则数据应该以表格 1 更新。由于我是 C# 新手,我发现这有点难以做到。你能给我一些关于如何解决这个问题的指示吗

4

2 回答 2

1

粗略(且不推荐)的方法是将两个数据网格视图设为“公共”。然后,当您退出一个数据网格上的单元格时,您检查它是否“脏”,如果是,则处理两个网格的更新。如果一个表单从另一个表单启动,一个更新将读取 this.ParentForm.dgFileNames.Rows....,另一个将是 this.frmSubordinate.dgFileNames.Rows...

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

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

于 2013-07-18T00:12:56.607 回答
0

您可以使用 Form 的模态结果轻松完成此操作。

理想情况下,您的 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();
}
于 2013-07-18T15:05:08.953 回答