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