*****C# 程序代码动态修改Label值(对Windows窗体控件进行线程安全调用)

本文章來源:

http://news.cnblogs.com/group/topic/44870/

功能:在代码中动态修改Label的值

步骤:

新建一个窗口Form1,添加一个标签label1和两个按钮btn_one,btn_two

然后添加btn_one和btn_two的Click事件,代码如下,都能动态修改label1的值

 //第一种方法实现
        private void btn_one_Click(object sender, EventArgs e) {
            Thread th = new Thread((ThreadStart)delegate() {
                test();
            });
            th.Start();
        }
        private void test() {
            int i = 0;
            while (i <= 1000000) {
                this.Invoke((MethodInvoker)delegate() {
                    label1.Text = i.ToString();
                });
                i += 100;
            }
        }
        //第二种方法实现
        private void btn_two_Click(object sender, EventArgs e) {
            Thread th = new Thread((ThreadStart)delegate() {
                MyThread();
            });
            th.Start();
        }
        public delegate void myEventHandler(string userStatus);
        public void MyThread() {
            int i = 1;
            while (i <= 1000) {
                if (label1.InvokeRequired) {
                    this.Invoke(new myEventHandler(ChangeLabelText), new object[] { i.ToString() });
                }
                else {
                    ChangeLabelText(i.ToString());
                }
                i++;
            }
        }
        public void ChangeLabelText(string value) {
            label1.Text = value;
        }

由于本人刚学.net有很多需要学习的地方,这是我花费了两天时间才搞出来的,如果有错误之处或者更好的方法,请大家留言,这段代码只是我现在写的 WCF通过流上传和下载文件要实现的一个功能,即实时更新上传下载进度及速度标签,通过流上传和下载文件还没有整理好,整理好了会传上来,与大家一起学习 进步。

你可能感兴趣的:(windows)