2017-10-06 25 views
0

我有Form1和Form2,在Form1中我有一些文本框,如用戶名,密碼和更多...和一個文本框「區域」。當用戶點擊「區域」(Form1.hide())時,Form2打開女巫有5個標籤,其上有區域名稱。如何從其他表單顯示現有表單?

那麼我怎樣才能讓用戶點擊Form2中的區域名稱,Form1將有它的地區?並保留用戶在區域點擊之前輸入的所有數據。

這樣的事情(在表格2):

private void center_Click(object sender, EventArgs e) 
    { 
     this.Hide(); 
     Form1.region = "center"; 
     Form1.show(); 
    } 
+0

你只需要訂閱形式的活動的FormClosing。當它觸發時,e.Cancel是假的,那麼你知道它即將死亡,所以調用this.Show()是一個好主意。注意FormClosed聽起來像是一個更好的主意,但已經太晚了,另一個應用程序的窗口可能會成爲焦點。另外請注意,你每天使用的應用程序並不是很多,他們通常有一個主窗口並在窗口內切換內容。像UserControl可以幫助你。 –

回答

0

在表2

private void center_Click(object sender, EventArgs e) 
{ 
    Form1 frm1 = new Form1(); 
    frm1.textbox_region = whateverobject.text; 
    this.hide(); 
    frm1.show(); 
} 

這將帶來了它的區域文本Form1上。

0

嘗試創建窗體2的實例,並調用ShowDialog()方法來顯示它

Form2 form2= new Form2(); 
form2.ShowDialog(); 
0

當創建窗體2,只傳遞Form1中作爲參數,並編輯在點擊事件的文本框的值。

在Form1上:

private void click_on_region(object sender, EventArgs e) 
{ 
    this.Hide(); 
    Form2 frm2 = new Form2(this); 
    Form2.Show(); 
} 

在窗口2:

Form1 _frm1; 
public Form_Main(Form1 frm) 
{ 
    InitializeComponent(); 
    _frm1 = frm; 
} 
private void center_Click(object sender, EventArgs e) 
{ 
    this.Hide(); 
    _frm1.textBox_region.Text = whateverobject.Text; 
    _frm1.Show(); 
} 

這可能不是最漂亮的,但它會爲初學者做。

0

表1個代碼

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 


    private void button1_Click(object sender, EventArgs e) 
    { 
     Form2 objForm2 = new Form2(); 
     objForm2.ShowDialog(); 
     textBox_Region.Text = objForm2.RegionName; 
    } 
} 

和表格2碼

public partial class Form2 : Form 
{ 
    public string RegionName 
    { 
     get 
     { 
      return textBox_Form2_Region.Text.ToString(); 
     } 
     set { } 

    } 
    public Form2() 
    { 
     InitializeComponent(); 
    } 
}