2011-08-09 56 views
2

我有一個WinForms應用程序,在某些時候,它將執行一些需要幾秒鐘的計算。在此期間,我禁用了控件。另外,我想顯示一個彈出窗口,它可以更明顯地「阻止」應用程序。WinForms:尋找一種簡單的方法來彈出'Processing ..'面板

我嘗試將一個面板放在窗體頂部以便這樣做,但是在那裏我無法向它添加任何文本。即我放在那裏的標籤和圖像框以某種方式不顯示在面板後面。

任何建議如何以快速簡單的方式實現這一點?我的意思是,沒有重新設計整個表格。

+1

MessageBox.Show(...) –

+0

不過這樣一來,他將阻止進程等待用戶的點擊和他calcultaions不會被執行...... –

回答

4

你用的東西沒有出現在你的額外面板向上的問題是,一切都發生在同一個線程,但你的計算出現,因爲它們佔用了線程阻塞的一切。你應該考慮使用一個backgroundWorker,它是WinForms中的一個工具。您應該將執行計算的函數調用放入backgroundWorker的DoWork方法中,然後表單本身可以在計算過程中繼續運行。

http://msdn.microsoft.com/en-us/library/cc221403%28v=vs.95%29.aspx的例子

1

創建一個對話框(窗體)在處理過程中彈出,然後可以在處理完成後關閉對話框。

通過使用不是消息框的對話框,您仍然可以控制完成處理後關閉窗口。

1

您可以創建一個簡單的UserControl,只需一個Label和一個ImageBox,也許可以使用公共setter來獲取它們的值。您可以將其添加到您的表單,將其Visible屬性設置爲false。然後,您可以在計算過程中將其顯示出來,並最終返回頂部。

+0

這正是我試圖和什麼都行不通 – Efrain

相關問題