我想在Windows Mobile中的任何进程上显示进度条/等待消息。我尝试显示简单的文字“Please wait ...”并编写了Application.DoEvents(),但它没有显示它,也没有显示进度条。
在Windows移动设备中显示进度条有什么方法或其他方法吗?
答案 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包含要显示的文本。