C# 显示进度条或等待消息

C# 显示进度条或等待消息,c#,windows-mobile,windows-mobile-6.5,C#,Windows Mobile,Windows Mobile 6.5,我想在windows mobile中的任何进程上显示进度条/等待消息。我尝试显示简单文本“请稍候…”,并编写了Application.DoEvents(),但它既不显示也不显示进度条 在windows mobile设备中显示进度条是否需要遵循任何方法或其他方法?使用计时器并在项目中放置静态字符串 如果不希望显示文本,请将字符串值设置为null 当计时器每200毫秒左右触发一次时,更新消息 private static string message = null; private void ti

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


在windows mobile设备中显示进度条是否需要遵循任何方法或其他方法?

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

如果不希望显示文本,请将字符串值设置为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值,并在上面的代码段中计时器滴答作响时更新控件

这也可以通过线程和事件处理程序来完成,但a是最简单的方法

更新:

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

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);
}
private void演示(int max){
label1.Text=String.Empty;
progressBar1.值=0;
progressBar1.最大值=最大值;
progressBar1.Refresh();
做{
progressBar1.Value++;
progressBar1.Refresh();
label1.Text=String.Format(“{0}”,progressBar1.Value);
label1.Refresh();
}而(progressBar1.Value
看看上面的代码是否满足您的需要


注意:哦,然后去掉Application.DoEvents()。这是一个邪恶的VB创建,鼓励开发人员不知道发生了什么。

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

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

试试这个

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


        });
    }

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

如果您能提供更多信息,将非常有用。。。让我们看看你的代码,我们会找出你做得不好的地方。谢谢你的回复。我想在按钮点击事件上显示进度条。首先,我尝试在进程启动时显示动画进度gif,并在进程完成时隐藏它。但当按钮事件进程正在进行时,它并没有改变我的用户界面。进度条也是如此。只有在按钮事件完成后,用户界面才会更改。我想在按钮事件处理过程进行时显示进度条。从您上面的评论,我猜您在一个线程中完成了所有这些。你或者需要在一个单独的线程中执行你的代码,并调用对进度条的更新,或者使用一个定时器来更新进度条。是的,它是在一个线程上。有什么我可以做的异步调用或相关的事情吗?因为我的进程线程已启动,而显示进度条的其他线程未出现在图片中,这会导致问题。从您的评论中可以看出,您需要的是
Refresh()
方法,而不是
Application.DoEvents()
请参见上面的我的更新。是的,让我尝试一下您的代码,但它似乎不起作用。我很困惑,我正在启动我的线程,所以进度条的其他线程(或加载消息)是如何从单独的线程集成的。