2013-04-17 16 views
3

我想在屏幕上設置optionsForm時禁用我的mainForm在顯示其他表單時禁用完整表單

要做到這一點,我正在考慮在mainForm的頂部放置一個看不見的形式,所以交互是不可能的(但只能通過鼠標點擊,鍵盤筆畫仍然可以工作)。

這怎麼辦?

+0

這就是ShowDialog的用途,它將作爲模式對話框打開第二個窗體。 –

+0

爲什麼'this.Enabled = false'在哪裏打開'optionsForm'? –

+0

@MarkHall謝謝,我不知道'ShowDialog()'選項。 – Devator

回答

5

您可以執行以下兩項操作之一:

1)將窗體顯示爲對話框。這將防止Form2可見時第一個窗體被選中。

Form f2 = new Form2(); 
f2.ShowDialog(); 

或2)禁用所有的第一個表單上的控件,如果你想在一個非模態的方式來顯示(這聽起來好像你不想要的)。

Form f2 = new Form2(); 
f2.Shown += ToggleControls; 
f2.Closing += ToggleControls; 
f2.Show(); 

public void ToggleControls(object o, sender e) 
{ 
    foreach(Control c in this.Controls) 
    { 
     c.Enabled = !c.Enabled; 
    } 
} 
+0

謝謝你,'ShowDialog'選項是完美的。 – Devator

+0

@Devator:很高興幫助。如果您解決了您的問題,請隨時接受爲答案。 – Ian

+0

必須等待幾分鐘才能完成。儘管現在完成;-) – Devator

0

或者你可以隱藏的MainForm而另一種是開放的:

this.Visible = false; 
optionsForm.ShowDialog(); 
this.Visible = true; 
0

效果最佳性能良好。嘗試在您的主要形式Button-Click事件。

try 
{ 
    form2 f = new form2(); 
    Enabled = false; 
    f.ShowDialog(this); 
    Enabled = true; 
    f.Dispose(); 
} 
catch (Exception exception) 
{ 
    MessageBox.Show(exception.Message); 
}