在 C# 中将值从两个不同的窗体传递到一个主窗体中
本文关键字:窗体 一个 两个 | 更新日期: 2023-09-27 18:01:09
我有一个叫做frmMain
的主窗体,上面有两个文本框,叫做txtCustomer
和txtProduct
,还有两个按钮叫做btnInsertCustomer
和btnInsertProduct
。
然后我有两种形式,称为frmCustomer
和frmProduct
。在每个表单中,我都有一个dataGridView,分别显示客户和产品的信息。
例如,当我单击btnInsertCustomer
打开frmCustomer
时,我可以双击此表单中的 dataGridView。当我这样做时,它应该将字段customerCode
的值插入到frmMain
txtCustomer
中。
然后我想单击btnInsertProduct
,frmProduct
将打开,我可以双击dataGridView
上的一行,并将字段productCode
的值插入frmMain
txtProduct
中,而不会丢失我之前插入的txtCustomer
的值。
使用我当前的方法,我只能从其中一个表单中获取一个值到我的主表单中。我制作了txtCustomer
标识符,并txtProduct
分配给公众。然后在CellDoubleClick
dataGridView
frmCustomer
的事件上,我编写了以下代码:
frmMain fr = new frmMain();
fr.txtCustomer = dgv1FrmCustomer.SelectedRows[0].Cells[1].Value.ToString();
fr.Show();
和相同的代码用于frmProduct
.这种方法的问题在于我只能从一个表单中获取数据。当我打开另一个窗体并选择一行时,上一个文本框中的数据消失了。我想知道如何从两种表单中获取数据?
您只需要在子窗体上设置一些可用于获取/设置值的properties
。
子窗体上的属性
public class ChildForm : Form
{
// FIELDS
private string customerName;
private string customerCode;
// PROPERTIES
public string CustomerName
{
get { return customerName; }
set { customerName = value; }
}
public string CustomerCode
{
get { return customerCode; }
set { customerCode = value; }
}
// FORM CLOSING
private void ChildForm_FormClosing(object sender, EventArgs e)
{
// SET VALUES
this.customerName = "name";
this.customerCode = "012345";
}
}
主窗体 - 调用子窗体并在关闭时获取值
using (ChildForm myChildForm = new myChildForm())
{
myChildForm.ShowDialog();
string returnedCustomerName = myChildForm.CustomerName;
string returnedCustomerCode = myChildForm.CustomerCode;
}