2014-04-23 71 views
0

我想讓用戶等待5秒鐘,然後用戶可以做某些事情,但由於我不想做Thread.Sleep(5000);,因此我遇到了麻煩,因爲我希望表單加載和功能是可見的,但我不想讓用戶做這些5秒(以及他們可以嘗試點擊按鈕,但什麼都不應該發生)。Windows窗體在顯示消息之前等待5秒鐘

我做了什麼,使這項工作(我的代碼略有不同,由於屬性)感謝回答者:

var t = Task.Delay(1000) //1 second/1000 ms 
t.Wait(); 
+0

聽起來就像你試圖做一些事情,我們/用戶不會喜歡:P – Jason

+0

@Jason,我知道對不對:D!幸運的是,這個程序永遠不會被使用,它只是一個練習。 – Zain

回答

7

那麼你可以隨時禁止所有形式和5秒後啓用...

(例如使用.NET Framework 4.5)

//Your window Constructor 
public MyWindow() 
{ 
    InitializeComponent(); 

    this.Cursor = Cursors.WaitCursor; 
    this.Enabled = false; 
    WaitSomeTime(); 

    //load stuff 
    ..... 
} 

public async void WaitSomeTime() 
{ 
    await Task.Delay(5000); 
    this.Enabled = true; 
    this.Cursor = Cursors.Default; 
} 
+0

嗨,感謝您的回覆! *給出有史以來最大的cookie * – Zain

+0

如果不是框架4.5,那麼該怎麼辦? – shivi

1

聽起來好像要被5秒後駁回了閃屏。

有在網絡上,顯示方法來創建一個WinForms閃屏(這是不容易,因爲它聽起來),包括

http://mrbool.com/how-to-make-a-splash-screen-in-csharp/26598

你可以有一個計時器只是不少資源5秒後通知啓動屏幕加載完成。

+0

這看起來像很多代碼在一瞥。發佈的其他人似乎有一個更合適的解決方案,但感謝您的帖子:)! – Zain

+0

是的另一個解決方案是非常優雅的。在引入異步/等待之前做得很難。 –

+0

的確如此,但事實證明它不起作用,我仍然可以點擊按鈕*哭泣* – Zain

0

讓你的構造函數調用一個後臺工作,並在工作完成的事件中加載你的主窗體。