我有两种形式,比如Form1和Form2。我有两个字段文件名,文件路径和一个按钮,单击时将转到表单2。表单2有一个数据网格,它有文件名和文件路径以及一个OK按钮。如果Form1中的行已经有文件路径和文件名,它应该填写在表单2中,如果我在Form2中操作该数据并单击确定按钮,数据应该以表格1更新。由于我是C#的新手,我发现这有点难以做到。能否请你就如何解决这个问题提供一些指示
答案 0 :(得分:1)
原始(并且不推荐)方式是使两个数据网格视图“公共”。然后,当您退出一个数据网格上的单元格时,检查它是否为“脏”,如果是,则处理两个网格的更新。如果一个表单从另一个表单启动,一个更新将读取this.ParentForm.dgFileNames.Rows ....而另一个将是this.frmSubordinate.dgFileNames.Rows ...
更好的方法是在两个表单上都有公共方法,并在每次更新一个网格上的行时调用另一个表单的相应更新方法。
实际上,每个表单都应该定义用于添加和更新的用户定义事件,以调用其他表单的方法。这假设在网格中输入更新的情况下,两种形式始终处于打开状态。这涉及为将通过事件传递的eventData定义接口和基类。
答案 1 :(得分:0)
您可以使用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();
}