2016-05-06 107 views
0

在此處閱讀了類似帖子後,我停留了很長一段時間,但確實找到了解決方案,但它是在虛擬代碼中,我只是不知道我在做什麼錯誤。當Form1加載時,將其隱藏並顯示Form2

我有2種形式,當主窗體加載起來,我想隱藏和顯示窗體2(登錄表單)

代碼如下所示。

private void Form1_Load(object sender, EventArgs e) 
{ 
    login loginform = new login(); 
    loginform.Show(); 
    this.Hide(); 
} 

但是當我運行該程序時,兩個窗體都是打開並可見的。

我在做什麼錯?主表單不應該隱藏嗎?

回答

1

Hide方法不受Load事件的影響,因爲沒有創建一個句柄。

你有兩個選擇:

+0

另外,您可以添加HandleCreated'事件的處理程序。 –

+0

是的,這是一個更好的。 @ BarryO'Kane沒有想到那個。 –

0

可以與主人財產的幫助下做到這一點,這裏是工作示例

主要形式

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

    private void Form1_Load(object sender, EventArgs e) 
    { 
     var loginFormMax = new LoginFormMax { Owner = this };//save main form as owner inside child form 
     loginFormMax.Show(); 
    } 
} 

子窗體

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

    private void LoginFormMax_Shown(object sender, EventArgs e) 
    { 
     var owner = this.Owner; 
     owner.Hide();//now you have control over owner form, just hide it 
    } 

    private void LoginFormMax_FormClosing(object sender, FormClosingEventArgs e) 
    { 
     var owner = this.Owner; 
     owner.Show();//now you have control over owner form, just show it again 
    } 
}