label1.Text += i.ToString();

解决方案 »

  1.   

    ps:这样只会直接显示0123456789
    要人肉眼可辨的0-->1-->2这样加上去,你得用backgroundworker
      

  2.   

    因为程序运行太快了,你看不到
    你在循环里价格Thread.Sleep(1000);
      

  3.   


    这样写的,也不会显示
    for (int i = 0; i < 100; i++)
                {
                    label1.Text = i.ToString();
                    Thread.Sleep(1000);
                }
      

  4.   

    加sleep,阻塞了,不会显示
    要么放timer里去,每秒+1,然后显示
    要么放线程里
      

  5.   


            public Form1()
            {
                InitializeComponent();
                Control.CheckForIllegalCrossThreadCalls = false;
            }        Thread drawThread = null;        private void button1_Click(object sender, EventArgs e)
            {
                closeThread();
                drawThread = new Thread(new ThreadStart(draw));
                drawThread.IsBackground = true;
                drawThread.Start();
            }        private void draw()
            {
                try
                {
                    for (int i = 0; i < 10; i++)
                    {
                        label1.Text = i.ToString();
                        Thread.Sleep(1000);
                    }
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show("error");
                }
                closeThread();
            }        //结束子线程  
            private void closeThread()
            {
                if (drawThread != null)
                {
                    if (drawThread.IsAlive)
                    {
                        drawThread.Abort();
                    }
                }
            }起一个线程就好了
      

  6.   


    这样写的,也不会显示
    for (int i = 0; i < 100; i++)
                {
                    label1.Text = i.ToString();
                    Thread.Sleep(1000);
                }三楼说得没错,是运行得太快了,肉眼没法观察
      for (int i = 0; i < 100; i++)
      {
          Thread.Sleep(1000);
          Application.DoEvents();
         label1.Text = i.ToString();
     }
    改变label1的文本会触发事件重绘Text,因为循环去改变所以程序已经帮你优化了不再执行触发事件重绘Text,也就是你说的显示不出来,加上Application.DoEvents();会让它继续执行触发事件,这时你就能看见了注意使用DoEvents()会出现哪些问题,自己查看相关资料
      

  7.   

    就是想做一个简单的显示,现在循环到第几条数据了还是进度啊,这是没有“条”了,亲,不带这么玩的。要找 BackgroundWorker 帮忙哦!
      

  8.   

    用timer控件。
    一个timer控件+一个label控件using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;namespace gundong_Label
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
                button2.Enabled = false;
            }        private void timer1_Tick(object sender, EventArgs e)
            {
                label1.Left -=3; //设置label1左边缘与其容器的工作区左边缘之间的距离
                if (label1.Right < 0) //当label1右边缘与其容器的工作区左边缘之间的距离小于0时
                {
                    label1.Left = this.Width; //设置label1左边缘与其容器的工作区左边缘之间的距离为该窗体的宽度
                }

            }
            //开始演示
            private void button1_Click(object sender, EventArgs e)
            {
                timer1.Enabled = true; //开始滚动
                button2.Enabled = true;
                
            }
            //单击暂停按钮
            private void button2_Click(object sender, EventArgs e)
            {
                timer1.Enabled = false; //停止滚动
                button2.Enabled = false;
            }
            //退出
            private void button3_Click(object sender, EventArgs e)
            {
                this.Close();
            }
        }
    }
      

  9.   

    哦哦,不好意思,原来代码是不能附加样式的,本来想给这段关键代码加红色的哈,
            private void timer1_Tick(object sender, EventArgs e)
            {
                label1.Left -=3; //设置label1左边缘与其容器的工作区左边缘之间的距离
                if (label1.Right < 0) //当label1右边缘与其容器的工作区左边缘之间的距离小于0时
                {
                    label1.Left = this.Width; //设置label1左边缘与其容器的工作区左边缘之间的距离为该窗体的宽度
                }
            }
      

  10.   

    就是想做一个简单的显示,现在循环到第几条数据了还是进度啊,这是没有“条”了,亲,不带这么玩的。要找 BackgroundWorker 帮忙哦! 
    for (int i = 0; i < 10; i++)
                {
                    i1=i;  //前面定义了一个全局的i1
                    backgroundWorker1.RunWorkerAsync();
                }
    private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
            {
                label1.Text .Text =ToString();
            } private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
            {
            //这个地方不知道怎么写了
           }
      

  11.   

    就是想做一个简单的显示,现在循环到第几条数据了还是进度啊,这是没有“条”了,亲,不带这么玩的。要找 BackgroundWorker 帮忙哦! 
    for (int i = 0; i < 10; i++)
                {
                    i1=i;  //前面定义了一个全局的i1
                    backgroundWorker1.RunWorkerAsync();
                }
    private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
            {
                label1.Text=i1.ToString();
            } private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
            {
            //这个地方不知道怎么写了
           }
    这个要怎样写代码?
      

  12.   

    backgroundworker_dowork中要做的就是需要循环处理的代码。
    backgroundWorker1_RunWorkerCompleted是后台线程结束后,需要做的处理。
      

  13.   

    运行太快了,你看不到,
    用timer控件,
    在timer事件中添加 给label赋值;
    设置 timer的间隔事件;要么在原有for循环中添加threed.sleep(5000);//单位毫秒
      

  14.   

    并不是运行太快,是因为for (int i = 0; i < 10; i++)
                {
                    label1.Text = i.ToString();
                }这段代码,会阻塞UI线程直到执行完毕才会刷新UI,如果是winform 可以用Application.Doevents()方法。或者采用子线程,或者用Timer,总之 都能解决。
    for (int i = 0; i < 10; i++)
                {
                    label1.Text = i.ToString();
                    Application.Doevents();
                }
      

  15.   

    就是想做一个简单的显示,现在循环到第几条数据了还是进度啊,这是没有“条”了,亲,不带这么玩的。要找 BackgroundWorker 帮忙哦! 
    for (int i = 0; i < 10; i++)
                {
                    i1=i;  //前面定义了一个全局的i1
                    backgroundWorker1.RunWorkerAsync();
                }
    private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
            {
                label1.Text=i1.ToString();
            } private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
            {
            //这个地方不知道怎么写了
           }
    这个要怎样写代码?
    是WinForm吗,是的话直接强制lab重绘就行了,用LaB_1.Refresh();就可以了....
      

  16.   

    .Net 4.0最简单了。 Task.Factory.StartNew(() => {for (int i = 0; i < 10000000; i++)
                {
                   this.Dispatcher.Invoke(new Action(() =>
                    {  
                            label1.Text = i.ToString();  
                 }));
                }
    });
      

  17.   

    循环显示1~100数字例子
    class program
    {
        static void Main()//入口方法
        {
            for (int i = 1; i <= 100; i++)//开始for循环
            {
                System.Console.WriteLine(i);//输出i的值
            }
            System.Console.ReadLine();//等待回车继续
        }
    }//输出1~100数字