问题描述
- C# 不同项目间委托更新主程序控件文本问题,帮我看看。
-
1.C#相关SerialPort通信解决方案,原来SerialPort和主程序是同一个项目,不同的CS里,我可以直接委托,在接收数据时更新窗口的值。
2.现在要将SerialPort逻辑操作独立一个项目。。我就不知道怎样操作,如果引用主程序时会报一个相互引用的报错。
3.新手求教。。以前同一个项目里时,代码是这样的: void serial_DataReceived(object sender, SerialDataReceivedEventArgs e)
{int size = serial.BytesToRead; byte[] list = new byte[size]; serial.Read(list, 0, size); builder.Remove(0, builder.Length);//清除字符串构造器的内容 foreach (byte b in list) { builder.Append(b.ToString("X2") + " "); } string str = builder.ToString(); if (!"".Equals(str) && str.Contains("0B")) { //这是以前的写法。。PowerMainForm是主程序,写了一个委托更改两个标签的文本。同一个项目里,不同的cs PowerMainForm.Show("准备扫描", "Please ready to scan!"); } } 现在都分开两个项目,不能直接引用。。各位指点下,我还能怎样通过SerialPort接收事件来更改主程序的控件文本,全部C币了。。
解决方案
发布一个回调事件,或者里面有一个公共事件,所有用的地方去绑定这个事件,就好像他是个按钮,你去绑定点击事件一样
解决方案二:
两种实现:
1. 把你主程序需要用到的类都抽象成接口,单独一个项目,你去引用接口的那个项目就不会互相引用了
2. 委托,你主程序里定义个callback,委托给SerialPort处理
解决方案三:
相互引用当然报错,你需要将它们的引用关系转换为单向的。
一般采用接口或者委托实现依赖倒置。
提问不需要C币。但是最好一个问题只问一件事。如果采纳,可以写给你一个例子。
解决方案四:
通过委托自定义事件,参考
http://www.cnblogs.com/huomm/archive/2007/12/04/982869.html
时间: 2024-08-31 19:47:33