0

我想在 windows mobile 中的任何进程上显示进度条/等待消息。我尝试显示简单的文本“请稍候......”并写了 Application.DoEvents() 但它没有显示它也没有显示进度条。

我需要遵循什么方法或其他方法在 Windows 移动设备中显示进度条吗?

4

3 回答 3

1

使用 Timer 并在您的项目中放置一个静态字符串。

当您不想显示文本时,请将字符串值设置为 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 值,并在上面的代码片段中的计时器滴答时更新您的控件。

这也可以通过线程和事件处理程序来完成,但计时器(点击查看代码示例)是最简单的方法。

更新:

如果您将其作为内联代码执行(我从您的评论中了解到),请尝试以下操作:

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

于 2012-07-17T15:18:49.430 回答
0

您正在运行的进程阻塞了 UI 线程?

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

于 2012-07-17T16:44:36.653 回答
0

尝试这个

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


        });
    }

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

于 2015-01-14T10:38:01.240 回答