显示进度条或等待消息

时间:2012-07-17 05:15:53

标签: c# windows-mobile windows-mobile-6.5

我想在Windows Mobile中的任何进程上显示进度条/等待消息。我尝试显示简单的文字“Please wait ...”并编写了Application.DoEvents(),但它没有显示它,也没有显示进度条。

在Windows移动设备中显示进度条有什么方法或其他方法吗?

3 个答案:

答案 0 :(得分:1)

使用计时器并在项目中放置一个静态字符串。

如果不想显示文本,请将字符串值设置为null。

当计时器每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)是最简单的方法。

<强>更新

如果您将此作为内联代码(我从您的评论中理解),请尝试以下操作:

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创作,鼓励开发人员不知道发生了什么。

答案 1 :(得分:0)

您正在运行的进程是阻止UI线程吗?

尝试在线程池上运行繁重的进程。

答案 2 :(得分:0)

试试这个

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


        });
    }

其中loadingPanelContainer包含要显示的文本。