2012-07-17 108 views
0

我想在Windows Mobile中的任何進程上顯示進度條/等待消息。我試着顯示簡單的文本「Please wait ...」,並寫了Application.DoEvents(),但沒有顯示它,也沒有顯示進度條。顯示進度條或等待消息

有什麼辦法或其他的事情我需要遵循在Windows移動設備中顯示進度條?

+0

如果你能提供比這更多的信息會是有幫助的...讓我們看看你的代碼,我們會弄清楚你做得不好。 – BonanzaDriver 2012-07-17 14:09:03

回答

1

使用計時器並在項目中放置一個靜態字符串。

如果您不想顯示文本,請將字符串值設置爲空。

當計時器每200毫秒左右觸發一次時,更新您的消息。

private static string message = null; 

private void timer_Tick(object sender, EventArgs e) { 
    if (String.IsNullOrEmpty(message)) { 
    // clear your form values 
    } else { 
    // set your form values 
    } 
} 

當然,如果你想要一個進度條,你也可以這樣做。只需爲您的進度條創建靜態int值並在計時器在上面的代碼片段中滴答時更新您的控件。

這也可以用線程和事件處理程序完成,但Timer (click to see code examples)是最簡單的方法。

UPDATE:

如果你這樣做是爲內嵌代碼(如我從您的意見理解),請嘗試以下操作:

private void Demo(int max) { 
    label1.Text = String.Empty; 
    progressBar1.Value = 0; 
    progressBar1.Maximum = max; 
    progressBar1.Refresh(); 
    do { 
    progressBar1.Value++; 
    progressBar1.Refresh(); 
    label1.Text = String.Format("{0}", progressBar1.Value); 
    label1.Refresh(); 
    } while (progressBar1.Value < progressBar1.Maximum); 
} 

看看上面的代碼做你所需要的。

注意:哦,並擺脫Application.DoEvents()。這是一個邪惡的VB創建,鼓勵開發人員不知道發生了什麼。

+0

感謝您的回覆。我想在按鈕點擊事件上顯示進度條。首先,我嘗試在進程啓動時嘗試顯示動畫進度gif,並在進程完成時隱藏它。但是當按鈕事件Process正在進行時,它不會改變我的用戶界面。 Bar.User接口僅在按鈕事件完成後才更改。我想在按鈕事件過程正在進行時顯示進度條。 – 2012-07-18 14:20:59

+0

從上面的評論中,我猜你正在一個線程中完成所有這些。您需要在單獨的線程中執行代碼並調用進度條的更新或使用計時器更新進度欄。 – jp2code 2012-07-18 15:53:44

+0

是的,它在單線程上。有什麼我可以做異步調用或相關的東西?因爲我的進程線程已啓動,並且顯示進度條的其他線程未進入導致問題的畫面。 – 2012-07-19 06:47:27

0

您正在運行的進程阻塞UI線程?

嘗試在線程池上運行繁重的進程。

0

試試這個

void StartLoadingPanel() 
    { 
     this.BeginInvoke((Action)delegate() 
     { 
      Cursor.Current = Cursors.WaitCursor; 
      loadingPanelContainer.Visible = true; 


     }); 
    } 

其中loadingPanelContainer包含文本顯示。