如何让keydown事件只触发一次?

cykevin 2009-07-30 04:18:41
高手请看:
默认情况下,按着空格键不放的话,keypress和keydown这两个事件是不停的触发的。我要做一个按键计时功能,如何让这两个事件只在按下去的瞬间触发一次?
...全文
1357 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
marvelstack 2009-07-30
  • 打赏
  • 举报
回复
在构造函数中进行事件注册
this.KeyPress += new KeyPressEventHandler(MainForm_KeyPress);
this.KeyDown += new KeyEventHandler(MainForm_KeyDown);

然后在各自的事件处理程序中取消事件注册

this.KeyPress -= new KeyPressEventHandler(MainForm_KeyPress);

this.KeyDown -= new KeyEventHandler(MainForm_KeyDown);

龙翔飞雪 2009-07-30
  • 打赏
  • 举报
回复

private void MainForm_KeyDown(object sender, KeyEventArgs e)
{
this.KeyDown = null;
//你要做的其他处理...
}

private void MainForm_KeyPress(object sender, KeyPressEventArgs e)
{
this.KeyPress = null;

//你要做的其他处理...
}

private void MainForm_KeyUp(object sender, KeyEventArgs e)
{
this.KeyPress += new KeyPressEventHandler(MainForm_KeyPress);
this.KeyDown += new KeyEventHandler(MainForm_KeyDown);
}
cykevin 2009-07-30
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 hide1984 的回复:]
引用 1 楼 sozdream 的回复:
keydown事件里把keydown事件清空.
keypress事件里把keypress事件清空.
keyup事件里, 再把两个事件再绑上去.


正解~
[/Quote]
清空啥意思?能否给出点代码瞧瞧
Hide1984 2009-07-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sozdream 的回复:]
keydown事件里把keydown事件清空.
keypress事件里把keypress事件清空.
keyup事件里, 再把两个事件再绑上去.
[/Quote]

正解~
socoola 2009-07-30
  • 打赏
  • 举报
回复
keyup只有一次,还不如计时第一次keypress和第一次keyup之间
龙翔飞雪 2009-07-30
  • 打赏
  • 举报
回复
keydown事件里把keydown事件清空.
keypress事件里把keypress事件清空.
keyup事件里, 再把两个事件再绑上去.

110,538

社区成员

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

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

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