首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET Framework >

如何在一个类中操作一个winform窗口里的lable

2012-01-07 
怎么在一个类中操作一个winform窗口里的lable我在Form1中有个lable1 在Form1中有个方法通过线程调用的是类

怎么在一个类中操作一个winform窗口里的lable
我在Form1中有个lable1 在Form1中有个方法通过线程调用的是类ChainNode里面的Process方法 
怎么让Process的返回值显示在lable1上 高手指点一二 谢谢

[解决办法]

C# code
namespace WindowsFormsApplication1{    public partial class Form1 : Form    {        Thread t = null;        ABC a = new ABC();        public Form1() {            InitializeComponent();        }        private void button1_Click(object sender, EventArgs e) {            if (t == null) {                t = new Thread(Proc);                t.IsBackground = true;                t.Start();            }        }        private void Proc() {            while (true) {                string str = a.GetStr();                if (label1.InvokeRequired) {                    label1.Invoke(new MethodInvoker(delegate { label1.Text = str; }));                } else                    label1.Text = str;                Thread.Sleep(1000);            }        }    }    class ABC    {        public string GetStr() {            return DateTime.Now.ToString();        }    }}
[解决办法]
Form1运行的是主线程,.netframework从2.0以后加入了线程安全特性,所以辅助线程不能直接访问主线程内的资源(label)
但Control提供了Invoke,BeginInvoke方法,可以跨线程安全访问。

热点排行