【C#】监控类中的值并通过事件传递出去

在编写串口助手时,接收返回值通过回调函数封装在类里面,主窗体的控件想要显示接收的返回值怎么办?

通过委托方式将主窗体中的静态事件做绑定

public class ListenerValue
{
    // 构造方法
    public  ListenerValue()
    {
        //和外部类的方法做绑定
        Handler = Form1.Recstring;
    }
    // 定义委托
    public delegate void ValueChanged(string s);
    //事件
    public ValueChanged Handler;

    // 定义属性
    private string m_value = string.Empty;
    public string Value
    {
        get { return m_value; }
        set
        {
            this.m_value = value;
            Handler(m_value);
        }
     }
}
SerialPort.cs
//在串口类里面将变量传递给监听值
public void serialPort1_DataReceived(object sender,System.IO.Ports.SerialDataReceivedEventArgs e)
{
         
     int num = _serialPort.BytesToRead;
     byte[] received_buf = new byte[num];
     cntReceivedBytes += num;
     _serialPort.Read(received_buf, 0, num);
      sb.Clear();
      foreach (byte b in received_buf)
      {
          sb.Append(b.ToString("X2"));  //字节显示为2位16进制
          sb.Append(" "); //用空格隔开
      }
      vc.Value = sb.ToString();     
}

主窗体 

//如果用的是winform,则需要将form静态化
public static Form1 mainFrm;

public static void Recstring(string s)
{
     Console.WriteLine("我的值被改变了: " + s);
     Form1.mainFrm.textbox1.text=s;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值