2016-09-23 49 views
-3

這裏是我的問題..從表單1中,我想當用戶點擊更新項目時,表單2將打開,但表單1仍然保持打開狀態。在這一點上,我希望Form 1被啓用爲false,並且我已經完成了。但是我想要在表單2關閉時,表單1啓用應該是真的。我不能做到這一點...這裏是我的代碼:啓用/禁用另一個表單而不用實現新人

形式1:

private void btnEditItem_Click(object sender, EventArgs e){ 
    Form3 form3 = new Form3(); 
    form3.Show(); 
    this.Enabled = false; 

} 

在表2(這是更新項目,更新後):

private void Form3_FormClosing(object sender, FormClosingEventArgs e) 
     { 
      Form1 form1 = new Form1(); 
      form1Here.Enabled = true; 
     } 

在這種情況下,它會打開另一個Form1。問題是,我想如何「無需打開它即可重新啓用表單1」?如果可能,請幫助我提供一些示例。謝謝

+1

您可以連接的處理程序,以form2.FormClosed或使用的ShowDialog(),而不是Show(),如果適用 –

+0

爲什麼不使用'form2.ShowDialog()'調用'form2'作爲模態。這種方式form1打開,但不能使用,直到form2關閉。順便說一句:什麼是「Form3」?請簡要說明你的問題。 – HimBromBeere

回答

1

附加處理程序到您的窗體。

Form3 form3 = new Form3(); 
form3.FormClosed += new FormClosedEventHandler(frm3_FormClosed); 
form3.Show(); 

private void frm3_FormClosed(object sender, FormClosedEventArgs e) 
{ 
    this.Enabled = true; 
} 

或者你可以使用ShowDialog

打開一個窗口,在關閉新打開的窗口只返回。

+0

非常感謝先生,從天而降的人拯救了我LOL – PoorGrammer

+0

如果它對你有用,你可以將它標記爲接受的答案。 –

0

從你的描述看來你想要一個模態對話框。

MSDN Modal and Modeless Dialog Boxes

一個模式對話框必須被關閉(隱藏或卸載),然後才能 繼續與應用程序的其餘工作

這意味着,如果表1將打開表單2作爲模式對話框,表單1將保持可見狀態,但它是禁用的,除非您關閉了表單2,否則無法進行任何操作。用您的話說:「表單1被禁用,表單2關閉表單1被再次啓用「。

代碼:

private void btnEditItem_Click(object sender, EventArgs e) 
{ 
    using (Form3 form3 = new Form3()} 
    { 
     var dlgResult = form3.ShowDialog(); // show form 3 as a modal dialog box 
     // halt this procedure until form3 is closed 
     // handle the result of form3: 
     if (dlgResult == DialogResult.OK) 
     { 
      var x = form3.SomePropery; 
      ProcessDialogOutput(x); 
     } 
    } 
} 

using語句是沒有必要的,但它是整齊的規劃,因爲Form3實現IDisposable

相關問題