簡體   English   中英

在不打開新實例的情況下將數據返回到窗體

[英]Returning data to Forms without opening a new instance

我試圖將一些數據從Form2返回到Form1,一切似乎很好,我得到了數據,因此,但是,當我嘗試將數據傳遞到文本框時,它不會更改文本。 僅當我打開Form1的新實例時,在Form2上它才有效。 為什么會這樣? 我不能將文本發送到舊實例嗎?

我正在使用此代碼;

Form1(主窗體)

public void updateText(string data)
{
    MessageBox.Show(data);
    txtGood.Text = data;
}

Form2 SecondaryForm = new Form2();

SecondaryForm.ShowDialog();

Form2(具有用戶數據的第二個表單)

Form1 MainForm = new Form1();
MainForm.updateText(data);
MainForm.ShowDialog();
this.Close();

因此,我的問題是,如何將數據值傳遞給主表單的舊實例? 無需創建新實例並顯示新實例。 有沒有辦法做到這一點?

這是因為您正在Form2代碼中創建Form1的實例。 您要做的是將Form2的parentForm設置為創建它的Form1的實例。

public partial class Form1 : Form
{
    public void CreateForm2()
    {
        Form2 form2 = new Form2(this);
        form2.ShowDialog();
    }

    public string MyTextboxText
    {
        get { return txtMyTextbox.Text; }
        set { txtMyTextbox.Text = value; }
    }
}

public partial class Form2 : Form
{
    private Form1 parentForm;

    public Form2(Form1 parentForm)
    {
        this.parentForm = parentForm;
    }

    public void myButtonClick() 
    {
        parentForm.MyTextboxText = "Hello";
    }
}

這段代碼只是一個示例,可能無法原樣編譯。

您可以做的是將MainForm(Form1)的引用傳遞給second Form(Form2) 然后,不用重新創建MainForm ,而使用引用來更新textbox

   //pass reference to form2
   Form2 SecondaryForm = new Form2(mainForm);
   SecondaryForm.ShowDialog();

    //in the constructor of Form2 save the reference of Form1
    Form1 form1 = null

    Form2(Form1 mainForm)
    {
        form1 = mainForm;
    }

    //then instead of creating a new MainForm again just use reference of Form1

    form1.updateText(data);
    this.Close()

主要形式:

private void Button2_Click(object sender, EventArgs e) {
    frmCustomersRecord rec = new frmCustomersRecord(this); 
    rec.ShowDialog();
    rec.GetData(); 
}

子表格:

public partial class frmCustomersRecord : Form 
{
    public frmCustomersRecord()
    {
        //blank contructor (Instance of an class)
    }

    frmCustomerDetails cd;

    public frmCustomersRecord(frmCustomerDetails parentForm) : this()
    {
        this.cd = parentForm; 
    } 
    //call the methods using child form object
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM