2015-09-05 25 views
3

我想在同一位置創建一個新表單。當我調用這個代碼時,一個新的表單打開,但在不同的屏幕位置。在同一屏幕位置創建新表單

private void BtnAddForm_Click(object sender, EventArgs e) 
{ 
    Form2 form2 = new Form2(); 
    form2.Tag = this; 
    form2.Location = this.Location; 
    form2.Show(this); 
    Hide(); 
} 

我用this.Location從我的第一個表格中獲取位置,但這沒有效果。

回答

2

您需要將StartPosition屬性設置爲Manual才能使其工作。

private void BtnAddForm_Click(object sender, EventArgs e) 
    { 
     Form2 form2 = new Form2(); 
     form2.Tag = this; 
     form2.StartPosition = FormStartPosition.Manual;   
     form2.Location = this.Location; 
     form2.Show(this); 
     Hide(); 
    } 
1

最簡單的方法是使用表格的StartPosition屬性。該屬性應在表單顯示之前設置。您可以在調用Show或ShowDialog方法之前或在窗體的構造函數中設置此屬性。

例如: form2.StartPosition = FormStartPosition.CenterParent

2

使用此。希望有幫助

private void BtnAddForm_Click(object sender, EventArgs e) 
    { 
     Form2 form2 = new Form2(); 
     form2.Show(this); 
     form2.Tag = this; 
     form2.Location = this.Location; 
     Hide(); 
    } 
+0

謝謝,這個工作,但讓頁面跳轉所以它看起來並不很流暢 – user3644817

+0

OK我只是修復了你的代碼。 @ user2946329的答案適合你。 –

1

使用form2.StartPosition = FormStartPosition.Manual;,您還應該使用form2.Closed += (s, args) => this.Close();隱藏後關閉父窗體就試試這個:

Hide(); 
Form2 form2 = new Form2(); 
form2.Tag = this; 
form2.StartPosition = FormStartPosition.Manual; 
form2.Location = this.Location; 
form2.Closed += (s, args) => this.Close(); 
form2.Show(); 
+0

工作完美!謝謝 – user3644817