循环运行时生成“忙”或“工作”对话框

时间:2014-11-10 22:12:58

标签: c# visual-studio-2010 statusbar

我正在使用MSVS2010,但在创建状态栏或状态栏时遇到问题。我有一个循环,做一些事情并运行一些功能。这是一个“while”循环。我需要做的就是在循环内部显示某种形式的“忙......”或“工作......”。有没有人具有如何实现这一目标的具体分步说明?我已经在线查看了教程和示例,但我并没有清楚地知道如何实现这一目标。对此的任何帮助都会很棒。提前谢谢。

3 个答案:

答案 0 :(得分:1)

您可以使用标签。 只需添加标签并为其命名,例如stateLabel

然后在你的代码中,就像这样做:

stateLabel.text = "Working..."; //Change the text of the Label
while(statement = true) //Your Loop
{
    //Do your work
}
stateLabel.text = "Finished work";

答案 1 :(得分:0)

简单的方法是使用带有'选框的进度条。风格属性,善于让用户等待某事。 所以设置'选取框'循环之前的属性,然后你可以回到默认值和/或在循环后隐藏这个进度条。 我是否足够清楚或者你想要一些代码示例?

答案 2 :(得分:0)

你可以做一些简单的事情,比如改变光标:

//change cursor to wait cursors
this.ForceCursor = Cursors.Wait;

//do loop
while(true)
{//do work}

//change the cursor back to regular arrow when work is completed
this.ForceCursor = Cursors.Arrow;

或者,只要你没有在while循环中对UI控件做任何事情,你就可以在另一个线程上进行循环。只需在窗口的某个位置放置一个进度条(称之为myProgBar),如果不知道循环将花多长时间,请将其设置为不确定。以下是我将如何做到这一点:

//create instance of loading window
YourLoadWindow loadWin = new YourLoadWindow();

//Create a thread that will do our loop work.
Thread t = new Thread(new ThreadStart(() => 
{
//do our looping;
while (true) {//do work}

//when loop is done, we want to hide the loading window
//but we created it on a different thread, so we must use its dispatcher to do
//the work from this thread
loadWin.Dispatcher.Invoke(new Action(() => { loadWin.Close(); }));

}));

//show load window
loadWin.Show();

//start doing our work
t.Start();