在 C# 中将值从两个不同的窗体传递到一个主窗体中

本文关键字:窗体 一个 两个 | 更新日期: 2023-09-27 18:01:09

我有一个叫做frmMain的主窗体,上面有两个文本框,叫做txtCustomertxtProduct,还有两个按钮叫做btnInsertCustomerbtnInsertProduct

然后我有两种形式,称为frmCustomerfrmProduct。在每个表单中,我都有一个dataGridView,分别显示客户和产品的信息。

例如,当我单击btnInsertCustomer打开frmCustomer时,我可以双击此表单中的 dataGridView。当我这样做时,它应该将字段customerCode的值插入到frmMain txtCustomer中。

然后我想单击btnInsertProductfrmProduct将打开,我可以双击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.这种方法的问题在于我只能从一个表单中获取数据。当我打开另一个窗体并选择一行时,上一个文本框中的数据消失了。我想知道如何从两种表单中获取数据?

在 C# 中将值从两个不同的窗体传递到一个主窗体中

您只需要在子窗体上设置一些可用于获取/设置值的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;
}