0

我想将我的 TextBox 的值从 Form1 传递到 Form2。

并出现此消息。

"Form that is not a top-level form cannot be displayed as a modal dialog box. Remove the form from any parent form before calling showDialog."

这是我的代码Form1

private void btnAddReceipt_Click(object sender, EventArgs e)
    {

        this.Hide();
        using (var Ticket = new frmCustomerTicket())
        {
            Ticket.CustomerID = txtCustNo.Text;
            ShowDialog();

        }

    }

这是我在 Form2 中的代码

    public string CustomerID { get; set; }


    private void frmCustomerTicket_Load(object sender, EventArgs e)
    {

        txtCustID.Text = CustomerID;        

    }
4

4 回答 4

0

尝试这个:

private void btnAddReceipt_Click(object sender, EventArgs e)
{



    this.Hide();
    var Ticket = new frmCustomerTicket();
        Ticket.CustomerID = txtCustNo.Text;
        Ticket.Show();



}

Upate 删除 using 块,它会导致 Form2 元素在超出范围时立即释放。

于 2013-07-12T00:51:02.853 回答
0

你为什么不在构造函数上做呢?我的意思是你可以在你的表格 2 上有这个:

public partial class MyForm: Form
{
   string myvar = string.Empty;
   public MyForm(string a)
   {
      InitializeComponent();
      this.myvar = a;
   }
}

在您的 form1 中,您可以拥有:

using (var Ticket = new frmCustomerTicket(txtCustNo.Text))
    {
        Ticket.ShowDialog();
    }
于 2013-07-12T00:54:39.940 回答
0

哦,第一种形式的按钮的点击事件:

        Form2 F2 = new F2(this);
        F2.Show();
        this.Hide();

然后在第二种形式中初始化第一种形式

    FormFirst F1 = new FormFirst();

    public From2(FormFirst form1)
    {
        InitializeComponent();
        F1 = form1;
    }
     textboxt2.text = F1.textbox.Text;

不要忘记将第一种形式的文本框的修饰符设为公开

于 2013-07-12T06:34:28.023 回答
0

我认为您的问题不在于在表单之间传递值。我认为这与 MDI 父子表单有关。根据定义,MDI 子窗体不是模态的。查看这些链接:

当子表单处于活动状态时,如何使 MDI 表单处于非活动状态
ShowDialog with MdiParent Issue
Call an Childform in MDIParent Form using ShowDialog()

于 2013-07-12T07:57:03.920 回答