*****C# 程序代码动态修改Label值(对Windows窗体控件进行线程安全调用)
本文章來源:
功能:在代码中动态修改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通过流上传和下载文件要实现的一个功能,即实时更新上传下载进度及速度标签,通过流上传和下载文件还没有整理好,整理好了会传上来,与大家一起学习 进步。