2017-10-06 122 views
1

我有一個表單,我想在執行異步事件時阻止它。我希望達到類似於顯示對話窗口時的效果,而不顯示或創建對話窗口。如何阻止窗口,就好像顯示對話框窗口

我不想手動禁用窗體上的控件,因爲將來可能會添加一些控件(不一定是我)。我想避免出於美學原因禁用整個表單/用戶控件。

是否有一個標準/優雅的方式來實現這一目標,或者我會走錯方向?

+0

只是等待異步事件 - UI事件(鍵入等)將排隊等待完成。 – Ben

+0

@BensaysNotoPoliticsonSO你的意思是等待同步?在最糟糕的情況下,事件可能需要幾分鐘才能完成,因此可能看起來應用程序沒有響應。 – user5226582

+1

真的,你應該給一些反饋。顯示一種無法排除它的模式表單,例如沒有取消或關閉按鈕。 – Ben

回答

1

您可以通過將它的Enabled屬性設置爲false來阻止WinForm窗口,但它會阻止用戶對該窗口進行任何操作(如移動,調整大小或隱藏),這可能非常煩人。考慮顯示一些負載指標。

我不會推薦禁用控件而不讓它們看起來被禁用,因爲它可能會讓用戶感到困惑。

編輯:作爲@AvoNappo指出的窗口行爲不同取決於在哪裏設置Enable屬性false

  • 如果您在構造函數中用戶設置它仍然能夠移動/最小化/關閉窗口;

  • 如果在構造函數窗口控件按鈕之後調用它,窗口的移動也會被阻塞。

+1

此外,還有一個微妙的區別,你出哪裏Enabled = false。在窗體構造函數中,它似乎禁用了所有子控件,但仍然可以移動並關閉窗體本身。當你把它放在Load處理程序中時,它基本上阻塞了所有的東西,所以就像彈出一個模式對話框一樣。 –

+0

這似乎灰色所有的子控件,而模式窗口控件看起來很正常。但如果我找不到更好的東西,我可能不得不訴諸於此。 (「我想避免禁用整個窗體/用戶控件的美學原因」) – user5226582

+0

@ user5226582我已經添加了第二個選項,使用與模式窗口相同的方法,同時打開 –