为什么不能间隔性的显示画图?

程序小海 2011-10-30 02:51:44
我想做的是 画一次图,显示后,间隔一秒 再画一次显示。

但是,我下面的代码 总是白色的背景,等到了十秒之后才显示图片。

我加了个messagebox这时候 跳一次框,然后就能看见窗体中显示的图片。

为什么会这样呢?、谢谢大家!

private void button1_Click(object sender, RoutedEventArgs e)
{
for (int i = 0; i < 10; i++)
{
if (i % 2 == 0)
{
Ellipse el = new Ellipse();
el.Height = 30;
el.Width = 60;
el.Fill = Brushes.Red;
el.Stroke = Brushes.Black;
canvas1.Children.Add(el);
}
else
{
//System.Threading.Thread.Sleep(1000);
Ellipse el = new Ellipse();
el.Height = 30;
el.Width = 60;
el.Fill = Brushes.Yellow;
el.Stroke = Brushes.Green;
canvas1.Children.Add(el);
}
System.Threading.Thread.Sleep(1000);
// MessageBox.Show("aa");
}
}
...全文
87 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
狗血大熊猫 2012-01-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 liujh850717 的回复:]
在一个方法中,程序默认的方式是 代码全部运行完毕之后,才在空间显示结果
比如:在一个方法中写入:
label.txt="12";
//todo
label.txt="34"; 程序运行过程中,不会显示12 在显示34 而是直接就显示34
所以你只能看到最后一张图片

而当你加入messagebox后,当出现这代码,程序就会将结果显示在用户控件上,所以你能看到每张图片
……
[/Quote]
+1
liujh850717 2011-12-28
  • 打赏
  • 举报
回复
在一个方法中,程序默认的方式是 代码全部运行完毕之后,才在空间显示结果
比如:在一个方法中写入:
label.txt="12";
//todo
label.txt="34"; 程序运行过程中,不会显示12 在显示34 而是直接就显示34
所以你只能看到最后一张图片

而当你加入messagebox后,当出现这代码,程序就会将结果显示在用户控件上,所以你能看到每张图片

解决办法就是:强制刷新事件
Application.DoEvents();//强制让系统执行所有事件
程序小海 2011-10-30
  • 打赏
  • 举报
回复
http://blog.csdn.net/wangwenzhuang/article/details/6078938

4,816

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧