回 帖 发 新 帖 刷新版面

主题:一个在循环中显示数据的问题!!!

这是在C#的一个小例子, 我希望LABLE1显示1-10,能在屏幕上依次看到1,2-10;
但是事实上只能显示10,似乎显示是在循环结束后才运行的,请高手赐教;

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace test
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            for (int  i = 1; i <= 10; i++)
            {
                label1.Text = i.ToString();
                //延时
                for (int j = 1; j <= 100000000; j++) { }
            }
        }
    }
}[em18][em18]

回复列表 (共6个回复)

沙发

延时这么写,我晕 sleep 干嘛用的?

板凳


1楼的兄弟, 是可以用SLEEP(), 但有时运行起来象死机一样,用不好,所以...

[em8][em8]

但是关键为题你没有看清楚!!!
请帮忙解决显示的问题!!!

3 楼

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace test
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            for (int  i = 1; i <= 10; i++)
            {
                label1.Text = i.ToString();
                Application.DoEvents();
                //延时
                Thread.Sleep(...);
            }
        }
    }
}

4 楼

有用回复一下,因为DoEvents()以前没有用过,是否是多线程?

5 楼

DoEvents用于执行挂起的消息队列,可以解决单线程中UI锁死的现象。

当然,对于可能导致UI锁死的代码块,最好用多线程来处理。

6 楼

建议使用一个timer控件,就很好实现了

我来回复

您尚未登录,请登录后再回复。点此登录或注册