erial ort-C# 不同项目间委托更新主程序控件文本问题,帮我看看。

问题描述

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

erial ort-C# 不同项目间委托更新主程序控件文本问题,帮我看看。的相关文章

c语言-Silverlight项目笔记1:UI控件与布局、MVVM、数据绑定

问题描述 Silverlight项目笔记1:UI控件与布局.MVVM.数据绑定 Silverlight项目笔记1:UI控件与布局.MVVM.数据绑定.await/async.Linq查询.WCF RIA Services.序列化.委托与事件 最近从技术支持转到开发岗,做Silverlight部分的开发,用的Prism+MVVM,框架由同事搭好,目前做的主要是功能实现,用到了一些东西,侧重于如何使用,总结如下: 1.UI控件与布局 2.MVVM 3.数据绑定 4.await/async 5.Lin

Windows 8.1 应用再出发 - 几种更新的控件

原文:Windows 8.1 应用再出发 - 几种更新的控件 Windows 8.1 除了新增了很多很有用的控件外,还对一些控件做出了更新.接下来我们一起对这些更新的控件一一做出讲解. 1. FlipView 更新 翻转视图控件,在应用中常用作图片等内容的翻页/滑动显示.用户可以浏览多个项目,每次显示一个.下面我们来看看FlipView控件的简单用法: <FlipView Width="300" Height="300"> <FlipViewIte

C#串口收发数据,子线程更新textbox控件内容,一段时间后,界面卡死,请教问题原因所在

问题描述 1.现象描述:我自己用C#做了一个模拟流量计软件,下位机大概每100ms会发送一些数据(8字节),我的软件接收后,响应一个9字节的数据.数据的接收和发送都在richtextbox中显示出来.我开了一个子线程,这个线程每100ms去更新textbox控件内容,(就是先读取textbox的内容,在此基础上递增一个常量,再显示在textbox中),程序能够正常运行一段时间,然后就出现了界面卡死的现象,串口能够正常收发,richtextbox中的日志数据能够正常打印,但就是主界面死掉了,点什么

panel-C# Winfrom项目,如何实现Panel控件响应键盘事件

问题描述 C# Winfrom项目,如何实现Panel控件响应键盘事件 在C# Winfrom 项目中,有一个from窗体和一个Panel控件. 目前from窗体和Panel控件都是全屏显示.并且在Panel控件内用于加载显示外部应用程序. 目前遇到一个问题就是按下键盘的"Esc"键,无法响应键盘的事件. 无法实现按下键盘的"Esc"键后就立即退出整个程序. 请问怎么样解决下用户按下键盘的"Esc"键后无法响应键盘的事件? 解决方案 使用下面的代

浏览器-SSH项目如何添加一个ocx控件

问题描述 SSH项目如何添加一个ocx控件 我想请教一下就是,我有一个SSH框架的JAVA项目和ocx控件,现在想把两者结合,让用户访问ie时能加载,这要如何实现?还有如果项目中已经使用了ocx控件,但是google浏览器不兼容,有没有什么办法可以解决一下的? 解决方案 activex和ssh没关系,在你的页面上添加object标签就可以了.google不支持ocx没办法,即便是网上银行之类的系统,能做到的就是检测user-agent给出提示,你的浏览器不兼容,让用户使用ie.而且退一步说,就算

tableview cell更新ui-iOS cell 上用定时器更新一个控件,一闪一闪的,求问怎么解决

问题描述 iOS cell 上用定时器更新一个控件,一闪一闪的,求问怎么解决 我用tableview做了一个注册页面,上面发送验证码需要60秒内不可重复发送,我把这个按钮用定时器倒计时了,可是更新起来是一闪一闪的更新,怎么能让他不闪,求大神指教,多谢. 解决方案 不要去刷新cell 获取到这个button (比如全局,设置tag 用 viewWithTag 去取 或者 在自定义的cell 把button作为一个可以外部使用的对象来定义[如果你cell和viewcontroller是分开写的话]

C# 后台线程更新UI控件

/********************************************************************************* * C# 后台线程更新UI控件 * 说明: * C#多线程更新UI控件的方法,每次都要找,记录一下,方便检索. * * 2017-10-23 深圳 南山平山村 曾剑锋 ********************************************************************************/ 一

温故而知新:WinForm/Silverlight多线程编程中如何更新UI控件的值

单线程的winfom程序中,设置一个控件的值是很easy的事情,直接 this.TextBox1.value = "Hello World!";就搞定了,但是如果在一个新线程中这么做,比如: private void btnSet_Click(object sender, EventArgs e){        Thread t = new Thread(new ParameterizedThreadStart(SetTextBoxValue));    //当然也可以用匿名委托写成

甲骨文推ControlsFX开源项目,JavaFX的UI控件集

JavaFXhttp://www.aliyun.com/zixun/aggregation/7155.html">开发人员近期宣布了一个名为"ControlsFX"的开源项目,该项目旨在为JavaFX开发提供更多的UI控件和其他工具. 该项目主要针对JavaFX 8.0(捆绑在JDK 8中),考虑到JavaFX中已经包含了一些控件,ControlsFX只会包含新的控件和功能,并且还有一个完善的javadoc文档. ControlsFX包含的主要特性如下: 1.  按钮栏