主窗体label.Text中的内容时时跟着子程序中变量的值改变

主窗体label.Text中的内容随时跟着子程序中变量的值改变
项目中有一个主窗体,一个类库,主窗体调用类库中的方法实现网络连接,主窗体中的一个label随时体现网络连接的变化,当网络连接正常时label中的字体变成绿色,如果在运行过程中网络连接断开,label字体就变红色。我的做法是:类库中的网络连接状态给出一个静态标志位IsConnect,但是需要在主窗体中写一个死循环来随时检测IsConnect的状态,太耗资源了,有没有更好的方法?求各位大牛给出一个思路!
------解决思路----------------------
DataBinding
------解决思路----------------------
事件通知。。。。
------解决思路----------------------
引用:
事件通知。。。。


public class Test{//你的自定义类
    public delegate void StatusChangedEventHandler(object obj,StatusChangedEventArgs e);
    public event StatusChangedEventHandler StatusChanged;
    protected virtual void OnStatusChanged(StatusChangedEventArgs e){
        if (this.StatusChanged != null) this.StatusChanged(e);
    }
    
    public enum Status{ Close }
    
    //在你内里面 状态改变的时候 调用这个
    this.OnStatusChanged(new StatusChangedEventArgs("your log"));
    
    public class StatusChangedEventArgs : EventArgs{
        private Status _Status;
        public Status Status{
            get{ return _Status; }
        }
        
        public StatusChangedEventArgs(Status s){
            this._Status = s;
        }
    }
}
//====调用
Test t = new Test();
t.StatusChanged += new StatusChangedEventHandler(test_StatusChanged);

private void test_StatusChanged(object obj,StatusChangedEventArgs e){
    //这里事件会被触发自己YY吧
}

------解决思路----------------------
委托,子窗口:

 public delegate void DelegateSetText(string value);
        public event DelegateSetText SetTextEvent; // 定义事件
        /// <summary>
        /// 触发事件
        /// </summary>
        /// <param name="value"></param>
        private void RaiseEvent(string value)
        {
            if (SetTextEvent != null)
                SetTextEvent(value);
        }

        /// <summary>
        /// 发送
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            // this.textBox1.Text
            RaiseEvent("点击了:" + (sender as Button).Text);
        }


父窗口:

TargetForm frm = new TargetForm();
            frm.SetTextEvent += new TargetForm.DelegateSetText(frm_SetTextEvent);
            frm.Show();


void frm_SetTextEvent(string value)
        {
            // 处理value 值
        }