C#通过委托实现线程修改控件值

第一步:

我们写个简单的单线程程序,也就是只有程序自己创建的那个主线程,没有使用多线程.

创建一个新工程,向窗口添加一个label命名为label1;我们要让程序运行时label1就显示一个数字,假设为100;通常我们会直接在窗口加载事件中写label1.Text = "100";这样,运行

,label1果然显示了100;

代码如下:(例1)

using System;
using System.Windows.Forms;

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

        private void Form1_Load(object sender, EventArgs e)
        {
            label1.Text = "100";
        }
    }
}

第二步:

我们现在要将程序稍稍改动一下,添加一个Button,命名为button1,我们要在按下button1后,将lable1的text从0显示到100,
那么,我们需要添加button1的Click事件,在click事件内写入循环显示0到100.

代码如下:(例2)

using System;
using System.Windows.Forms;

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

        private void Form1_Load(object sender, EventArgs e)
        {
            label1.Text = "0";
        }

        private void button1_Click(object sender, EventArgs e)
        {
            for(int i=0;i<101;i++)
            {
                label1.Text = i.ToString();
            }
        }
    }
}

运行一下看看,按一下button1,结果是我们一下就看到了100,并没有看到0~100的过程,为什么呢?
呵呵,因为你的处理器速度太快了,就只能看到最后的结果,那么,怎样才能看到中间过程呢?(等一下再讲)
我们先用函数的方式来实现上面的功能
写个名为run的函数吧:
private void run()
{
    for(int i=0;i<101;i++)
    {
        label1.Text = i.ToString();
    }
}
这样就可以直接调用run函数实现功能了,而不用在事件函数内写代码。(这样做是有好处的)

整个代码如下:(例3)

using System;
using System.Windows.Forms;

namespace ThreadTest
{
    public partial class

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值