日期:2014-05-20  浏览次数:20710 次

请教一个C#中的关于事件的问题

作一个有关串口取数的程序 ..我自己写了一个类Cls_MS23,类中使用的是ServialPort类,当收到数据时就会触发DataReceived事件,在这个事件中我处理一下收到的数据,我想将这个处理后的数据传回到form1中,因为Cls_MS23是form1调用的.
作Vb时我曾经用过Raiseevent,将结果传回界面,在C#中没有这个东西,所以想问一下用什么方法可以将结果传回窗体呢.


------解决方案--------------------
同样使用委托.

在DataReceived处理之后,引发这个委托.然后在Form中响应这个委托事件,得到数据.
------解决方案--------------------
方法1:
写一个delegate
在命名空间里定义一个全局delegate,在ServialPort调用
方法2:
在命名空间里定义一个全局event
public delegate void EventUpdateHandler(object sender);

在类ServialPort里定义一个事件envent
public EventUpdateHandler DataChanged;

然后在form1中初始化servialPort类时,给这个事件一个方法去处理
ServialPort sp = new ServialPort();
sp.DataChanged += new EventUpdateHandler(UpdateItem);

然后在定义一个方法
private void UpdateItem(object sender)
{
}去处理即可