【问题标题】:Passing value from two different forms into one main form in C#将值从两种不同形式传递到 C# 中的一个主要形式
【发布时间】:2015-09-23 14:04:30
【问题描述】:

我有一个名为frmMain 的主窗体,两个名为txtCustomertxtProduct 的文本框以及两个名为btnInsertCustomerbtnInsertProduct 的按钮。

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

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

然后我想点击btnInsertProductfrmProduct 将打开,我可以双击dataGridView 上的一行并将字段productCode 的值插入txtProduct in frmMain 而不会丢失我之前插入的txtCustomer 的值。

使用我当前的方法,我只能从其中一个表单中获取一个值到我的主表单中。我将txtCustomertxtProduct 的标识符分配给公共。然后在CellDoubleClickdataGridViewfrmCustomer 的事件上我写了这段代码:

frmMain fr = new frmMain();
fr.txtCustomer = dgv1FrmCustomer.SelectedRows[0].Cells[1].Value.ToString();
fr.Show();

frmProduct 的代码相同。这种方法的问题是我只能从一个表单中获取数据。当我打开另一个表单并选择一行时,前一个文本框中的数据消失了。我想知道如何从这两种表单中获取数据?

【问题讨论】:

  • 我不确定我是否完全理解您的场景,但您正在实例化一个新的 frmMain 对象,因此除非您重载构造函数,否则它不会知道其他 frmMain 对象的任何信息。

标签: c# forms datagridview parameter-passing


【解决方案1】:

您只需要在您的子表单上设置一些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;
}

【讨论】:

  • 谢谢。我设置了字段和属性,但代码的第二部分有问题。我必须在哪里使用...代码编写此代码?我把它写在主窗体的正文中,并在显示的错误处写出来。
  • 在本例中,using 语句将出现在您的主表单中,可能在单击按钮或您用来决定何时启动此表单的任何内容中。这段代码创建了一个 ChildForm 的新实例,将其显示为一个锁定主窗体的对话框,当对话框关闭时,我们将结果返回到主窗体。然后,您可以获取返回的值并做任何您想做的事情。我希望这是有道理的。
  • 非常感谢。它工作正常,而且非常简单。
  • 我猜代码的第一行是'using (ChildForm myChildForm = new ChildForm())'
猜你喜欢
  • 2015-06-06
  • 2015-06-23
  • 2012-03-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多