将值从两种不同的形式传递到 C# 中的一个主要形式
Passing value from two different forms into one main form in C#
我有一个名为 frmMain
的主窗体和两个名为 txtCustomer
和 txtProduct
的文本框以及两个名为 btnInsertCustomer
和 btnInsertProduct
的按钮。
然后我有两种形式,称为 frmCustomer
和 frmProduct
。在每个表单中,我都有一个 dataGridView,分别显示客户和产品的信息。
例如,当我单击 btnInsertCustomer
时,frmCustomer
打开,我可以双击此表单中的 dataGridView。当我这样做时,它应该将字段 customerCode
的值插入到 frmMain
中的 txtCustomer
中。
然后我想点击 btnInsertProduct
并且 frmProduct
将打开,我可以双击 dataGridView
上的一行并将字段 productCode
的值插入到frmMain
中的 txtProduct
而不会丢失我之前插入的 txtCustomer
的值。
用我目前的方法,我只能从其中一个表单中获取一个值到我的主表单中。我将 txtCustomer
和 txtProduct
的标识符分配给了 public。然后在 frmCustomer
的 dataGridView
的 CellDoubleClick
事件上,我写了这段代码:
frmMain fr = new frmMain();
fr.txtCustomer = dgv1FrmCustomer.SelectedRows[0].Cells[1].Value.ToString();
fr.Show();
和frmProduct
的代码相同。这种方法的问题是我只能从一种形式获取数据。当我打开另一个表格并 select 一行时,前一个文本框中的数据消失了。我想知道如何从这两种形式获取数据?
您只需在您的子表单上设置一些 properties
即可用于 get/set 值。
子窗体上的属性
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;
}
我有一个名为 frmMain
的主窗体和两个名为 txtCustomer
和 txtProduct
的文本框以及两个名为 btnInsertCustomer
和 btnInsertProduct
的按钮。
然后我有两种形式,称为 frmCustomer
和 frmProduct
。在每个表单中,我都有一个 dataGridView,分别显示客户和产品的信息。
例如,当我单击 btnInsertCustomer
时,frmCustomer
打开,我可以双击此表单中的 dataGridView。当我这样做时,它应该将字段 customerCode
的值插入到 frmMain
中的 txtCustomer
中。
然后我想点击 btnInsertProduct
并且 frmProduct
将打开,我可以双击 dataGridView
上的一行并将字段 productCode
的值插入到frmMain
中的 txtProduct
而不会丢失我之前插入的 txtCustomer
的值。
用我目前的方法,我只能从其中一个表单中获取一个值到我的主表单中。我将 txtCustomer
和 txtProduct
的标识符分配给了 public。然后在 frmCustomer
的 dataGridView
的 CellDoubleClick
事件上,我写了这段代码:
frmMain fr = new frmMain();
fr.txtCustomer = dgv1FrmCustomer.SelectedRows[0].Cells[1].Value.ToString();
fr.Show();
和frmProduct
的代码相同。这种方法的问题是我只能从一种形式获取数据。当我打开另一个表格并 select 一行时,前一个文本框中的数据消失了。我想知道如何从这两种形式获取数据?
您只需在您的子表单上设置一些 properties
即可用于 get/set 值。
子窗体上的属性
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;
}