我想在屏幕上設置optionsForm
時禁用我的mainForm
。在顯示其他表單時禁用完整表單
要做到這一點,我正在考慮在mainForm
的頂部放置一個看不見的形式,所以交互是不可能的(但只能通過鼠標點擊,鍵盤筆畫仍然可以工作)。
這怎麼辦?
我想在屏幕上設置optionsForm
時禁用我的mainForm
。在顯示其他表單時禁用完整表單
要做到這一點,我正在考慮在mainForm
的頂部放置一個看不見的形式,所以交互是不可能的(但只能通過鼠標點擊,鍵盤筆畫仍然可以工作)。
這怎麼辦?
您可以執行以下兩項操作之一:
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;
}
}
或者你可以隱藏的MainForm而另一種是開放的:
this.Visible = false;
optionsForm.ShowDialog();
this.Visible = true;
效果最佳性能良好。嘗試在您的主要形式Button-Click
事件。
try
{
form2 f = new form2();
Enabled = false;
f.ShowDialog(this);
Enabled = true;
f.Dispose();
}
catch (Exception exception)
{
MessageBox.Show(exception.Message);
}
這就是ShowDialog的用途,它將作爲模式對話框打開第二個窗體。 –
爲什麼'this.Enabled = false'在哪裏打開'optionsForm'? –
@MarkHall謝謝,我不知道'ShowDialog()'選項。 – Devator