我想在 windows mobile 中的任何进程上显示进度条/等待消息。我尝试显示简单的文本“请稍候......”并写了 Application.DoEvents() 但它没有显示它也没有显示进度条。
我需要遵循什么方法或其他方法在 Windows 移动设备中显示进度条吗?
我想在 windows mobile 中的任何进程上显示进度条/等待消息。我尝试显示简单的文本“请稍候......”并写了 Application.DoEvents() 但它没有显示它也没有显示进度条。
我需要遵循什么方法或其他方法在 Windows 移动设备中显示进度条吗?
使用 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 创建,它鼓励开发人员不知道发生了什么。
您正在运行的进程阻塞了 UI 线程?
尝试在线程池上运行繁重的进程。
尝试这个
void StartLoadingPanel()
{
this.BeginInvoke((Action)delegate()
{
Cursor.Current = Cursors.WaitCursor;
loadingPanelContainer.Visible = true;
});
}
其中 loadingPanelContainer 包含要显示的文本。