读书人

关于C#控件显示的有关问题

发布时间: 2013-12-05 22:27:44 作者: rapoo

关于C#控件显示的问题
背景:点击一个按钮执行耗时操作之前,我想要显示一个picturebox,里面有加载了一张动态图片,这样就相当于一个loading界面,然后再结束耗时操作的时候将控件隐藏。
代码如下:

private void test_Click(object sender, EventArgs e)
{
picturebox1.Visible = true;
// 这里执行耗时操作,用循环来替代
for (int i = 0; i < 100; i++ )
{
for (int j = 0; j < 100; j++ )
{
for (int k = 0; k < 10000; k++ )
{
int[] arrayll = new int[100];
}
}
}
MessageBox.Show("Finished!!!");
}

问题:
当执行到picturebox1.visible = true时,控件不显示。要一直到循环结束,执行到MessageBox.Show("Finished!!!");时,控件才显示。
这是为什么?有什么办法可以解决?
[解决办法]
picturebox1.Visible = true;
picturebox1.Update();
[解决办法]
卡住是没办法的,因为他们都是在主线程中运行。
一般的做法是耗时的操作另开线程运行,运行完成后如果需要更新界面,通过委托更新界面。

读书人网 >C#

热点推荐