键盘事件 委托

dashuangzhijia 2010-01-21 09:43:45
我要实现的效果是
键盘按下,在private void Form1_KeyDown(object sender, KeyEventArgs e)
添加一个串口的委托事件
serialPort.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(DataReceived);

键盘抬起 在private void Form1_KeyUp(object sender, KeyEventArgs e)
中 serialPort.DataReceived -= new System.IO.Ports.SerialDataReceivedEventHandler(DataReceived);
键盘抬起程序就死了
这样的思路有问题吗
...全文
159 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dashuangzhijia 2010-01-21
  • 打赏
  • 举报
回复
感谢您的热心帮助,我没有说清楚,DataReceived 处理了
private void DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
this.txtDistance.BeginInvoke(new myDelegate(updateTextBox));
}
public void updateTextBox()
{

}
xray2005 2010-01-21
  • 打赏
  • 举报
回复
你混淆了委托和方法。

简单的说:
serialPort.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(DataReceived); //这个代码意思是说,接收到数据以后调用DataReceived方法去处理。


那么按照你的代码,在哪里接收数据呢? 你在Form1_KeyDown的时候,serialPort.DataReceived +=不是接收数据的方法。同样,Form1_KeyUp里面你的代码也不是说停止接收。而是说移除接收到数据以后调用DataReceived方法去处理。

明白了吗?

简单的方式:比如:应该是:
申明需要的变量等。
serialPort.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(DealData);

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
serialPort.Open();//打开
serialPort.Read();//读数据

}
private void Form1_KeyUp(object sender, KeyEventArgs e)
{
//停止接收关闭
}

private void DealData()
{
//根据你自己的情况处理数据
}
以上只是告诉你思路,代码不完整。
dashuangzhijia 2010-01-21
  • 打赏
  • 举报
回复
我就是要实现Form1_KeyDown的时候开始接收数据DataReceived,Form1_KeyUp就不接收了。
您看我是要在
应该在Form1_KeyDown的时候调用某个方法比如:GetData()来接收数据,
我把加委托放到GetData()里面吗?
我一直用的是.net串口控件的委托来处理接收数据的,
有其他的办法,希望您能指导下
my176527627 2010-01-21
  • 打赏
  • 举报
回复
欢迎做ASP.NET(C#)技术的朋友遇到技术问题来本群交流,一群37078937,二群37078867,超级群42656401,请按照群要求修改工作地名片,群会不定期清理不发言交流的,不改名的,保持群内新鲜血液,希望大家互相交流,共同提高技术!谢谢
xray2005 2010-01-21
  • 打赏
  • 举报
回复
感觉你代码似乎没对。

看你代码。你好像是想:Form1_KeyDown的时候开始接收数据DataReceived,Form1_KeyUp就不接收了。


如果是这样思路的话,那就不对了。

应该在Form1_KeyDown的时候调用某个方法比如:GetData()来接收数据,而不是给加委托。
同样,Form1_KeyUp的时候调用某个方法比如:StopGetData()来停止接收数据,而不移除。
mngzilin 2010-01-21
  • 打赏
  • 举报
回复
serialPort.DataReceived -= serialPort.DataReceived;

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧