2014-01-23 119 views
0

我正在使用Visual Studio 2012.我創建了兩個窗體,form1帶有一個按鈕來打開form2,而form2有一個「退出」按鈕,這會將我帶回到form1。如何隱藏我的第二個窗體對話框,同時不關閉我的第一個窗體?

這是從表格1我的代碼:

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

和形式2:

private void btnExit_Click(object sender, EventArgs e) 
     { 
      this.Hide(); 
     } 

我知道我可以使用frm2.Show(); this.Hide();而不是frm2.showdialog();。但是,我需要我的表格1的狀態保持不變。我的form1包含一個登錄表單,如果登錄名是正確的,它只啓用按鈕(如新的表單按鈕)。因此,如果我隱藏form1並再次顯示它,則登錄重置;

+0

爲什麼您需要在用戶已通過身份驗證後返回登錄屏幕? –

+0

,因爲我的登錄屏幕和我的主菜單按鈕位於同一頁面@GrantWinney https://fbcdn-sphotos-fa.akamaihd.net/hphotos-ak-frc1/t1/1003385_10203194962101399_1825981410_n.jpg –

+0

因此,您需要參考' Form1',所以你可以再次顯示它? [看看這是否有幫助。](http://stackoverflow.com/questions/2958912/open-form2-from-form1-close-form1-from-form2) –

回答

1

Form2類添加一個屬性來存儲參考父窗體:然後在Form1

public Form ParentForm { get; set; } 

,可以顯示Form2這種方式,同時隱藏Form1

private void btnRecords_Click(object sender, EventArgs e) 
{ 
    Form2 frm2 = new Form2(); 
    frm2.ParentForm = this; 
    this.Hide(); 
    frm2.ShowDialog(); 
} 

當關閉Form2時,您可以再次顯示Form1

private void btnExit_Click(object sender, EventArgs e) 
{ 
    this.ParentForm.Show(); 
    this.Close(); 
} 

甚至更​​好,靠近Form2這樣:

private void btnExit_Click(object sender, EventArgs e) 
{ 
    this.Close(); 
} 

private void Form2_FormClosed(object sender, FormClosedEventArgs e) 
{ 
    if (this.ParentForm != null) 
     this.ParentForm.Show(); 
} 

這也將顯示Form1回來,如果我們的用戶在標題欄中使用十字按鈕關閉Form2

0

爲什麼不在主窗體的form_load事件中處理登錄。每當表單重新獲得焦點時,form_load就不會運行。如果他們沒有登錄負載,關閉他們的表單是否合適?就我而言,我向域管理員發送一封電子郵件,其中包含windows用戶名,並關閉該程序。他們必須重新開放該計劃才能再次開展工作。

private void frmMain_Load(object sender, EventArgs e) 
    { 
     //Check login 
     Form frmLogin = new Form(); 
     frmLogin.ShowDialog(); 
     if (frmLogin.LoginSucessful == true) 
     { 
      btnRecords.Enabled = true; 
      lblWarning.Visible = false; 
     } 
     else 
     { 
      btnRecords.Enabled = false; 
      lblWarning.Visible = true; 
      lblWarning.Text = "You must first Login"; 
     } 
     //other setup code here 
    } 
相關問題