将数据从一个窗体传递到另一个窗体,其中有一个中间窗体 c#



我正在开发一个小应用程序,我正在考虑将文本框值从另一个表单传递到另一个表单。我知道如何在有两种形式的情况下直接传递数据,但就我而言,我也有一个中间形式(用户可以选择现金或信用卡,并根据选择,然后打开表格(frm_cash或frm_credit(。单击按钮确定后,表单( ( frm_cash 或 frm_credit (( 我希望将 ( frm_cash 或 frm_credit ( 中的文本框显示在 frm1 文本框中。如果有人可以帮助我解决这个问题?

听起来这个选择一次只做一次(你不会同时打开多个现金/贷方对话框(。 如果是这种情况,则可以只使用类的static成员来存储值。 可以使用类名后跟静态成员名从任何位置访问静态成员。 下面是一个简单的类作为示例:

public class PurchaseType
{
public static PurchaseTypeOptions SelectedType;
public enum PurchaseTypeOptions
{
Cash,
Credit
}
}

您可以使用如下代码存储选择:

PurchaseType.SelectedType = PurchaseType.PurchaseTypeOptions.Credit;

然后从其他地方,您可以使用以下内容访问它:

switch(PurchaseType.SelectedType)
{
case PurchaseType.PurchaseTypeOptions.Cash:
// ... do something for Cash ...
break;
case PurchaseType.PurchaseTypeOptions.Credit:
// ... do something for Credit ...
break;
}

单击按钮后确定表单( ( frm_cash 或 frm_credit (( 我希望显示来自(frm_cash或frm_credit(的文本框 到 FRM1 文本框中。

因此,据推测,在 frm1 中,您正在创建 frm_cash 或 frm_credit 的实例并显示它。 关闭这些表单后(通过单击"确定"(,您希望使用其中一个表单中的一些信息更新 frm1。

这通常是通过使用 ShowDialog 显示窗体 (frm_cash/frm_credit( 来完成的。 这会导致 frm1 中的执行停止,直到子窗体被关闭。 关闭后,您可以使用子窗体的实例变量从中检索信息。

在子窗体中,通过设置 DialogResult 来关闭对话框(随后将执行返回到父窗体(。 因此,在子窗体中,您将具有如下代码:

// ... code in either frm_cash or frm_credit ...
private void btnOK_Click(object sender, EventArgs e)
{
// do some validation...and if everything is okay, set DialogResult
this.DialogResult = DialogResult.OK;
}
private void btnCancel_Click(object sender, EventArgs e)
{
// this gets set automatically if the user clicks the X in the top right
this.DialogResult = DialogResult.Cancel; 
}

回到 frm1,您将使用如下代码来显示窗体并根据 DialogResult 执行操作:

// ... code in frm1 ...
private void btnCredit_Click(object sender, EventArgs e)
{
frmCredit credit = new frmCredit();
if (credit.ShowDialog() == DialogResult.OK) // code STOPS here until "credit" is dismissed
{
// we only get in here if "OK" was returned
this.textBox1.Text = credit.XXX; // retrieve something from "credit"
}
}

显然,在frm_cash和frm_credit中,您需要创建公共属性来公开详细信息,以便可以从 frm1 访问它们,如我credit.XXX示例中所示。

最新更新