C# 怎么实现键盘事件

rickey_f 2008-07-20 09:28:27
如题

哪位大侠指点迷津
...全文
699 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
oowingoo 2010-11-30
  • 打赏
  • 举报
回复
学习一下,2楼的那个是怎么回答的
tyuang_99 2010-11-01
  • 打赏
  • 举报
回复
想看看3楼是怎么回答的
Jeanne_L 2008-08-19
  • 打赏
  • 举报
回复
学习了
睡神在睡觉 2008-07-22
  • 打赏
  • 举报
回复
还不散分等啥啊。。。。。。好好看看事件什么都明白了,1楼正解,顶3楼。
yangxic 2008-07-22
  • 打赏
  • 举报
回复
楼主如果是想用委托的话,下面这段代码或许能帮上点忙。
using System;
using System.Collections.Generic;
using System.Text;

namespace 键盘按下事件
{
class KeyEventArgs : EventArgs
{
public char ch;
}
//声明一个委托事件
delegate void KeyHandler(object source,KeyEventArgs arg);
//事件类
class KeyEvent
{
//事件对象
public event KeyHandler KeyPress;
//触发事件
public void OnKeyPress(char keyarg)
{
KeyEventArgs key = new KeyEventArgs();

if (KeyPress != null)
key.ch = keyarg;
KeyPress(this, key);
}
}
//声明事件处理程序类
class ProcessKey
{
public void keyhandler(object source, KeyEventArgs arg)
{
Console.WriteLine("Received keystroke:" + arg.ch);
}
}
class CountKeys
{
public int count = 0;
public void keyhandler(object source, KeyEventArgs arg)
{
count++;
}
}

class KeyEventDemo
{
static void Main(string[] args)
{
KeyEvent kevt = new KeyEvent();
ProcessKey pk = new ProcessKey();
CountKeys ck = new CountKeys();
char ch;
kevt.KeyPress += new KeyHandler(pk.keyhandler);
kevt.KeyPress += new KeyHandler(ck.keyhandler);
Console.WriteLine("输入字符串" + "用句号结束");
do
{
ch = (char)Console.Read();
kevt.OnKeyPress(ch);
} while (ch != '.');
Console.WriteLine(ck.count + " keys pressed.");
Console.ReadKey();
}
}
}
lishuai2008 2008-07-22
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 linnyn 的回复:]
Key_Press,Key_Down 键盘事件.你问道“C# 怎么实现键盘事件 ”,你键盘做了什么操作,你自动实现与对应的事件的。鼠标也是一样,都是自动执行的。
[/Quote]
支持.
DeanZwh 2008-07-22
  • 打赏
  • 举报
回复
dd
qishouzwh 2008-07-21
  • 打赏
  • 举报
回复
楼主给点分吧:)
gh_li 2008-07-21
  • 打赏
  • 举报
回复
接分
zqbookshop 2008-07-21
  • 打赏
  • 举报
回复

private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
//如果用户在键盘上按下标签所表示的字母,则删除此标签
if (e.KeyChar == label1.Name.ToCharArray()[0] || e.KeyChar == label1.Name.ToLower().ToCharArray()[0])
{
this.Controls.Remove(label1);
label1 = null;
t.Abort();
}
}
xbfitliu 2008-07-21
  • 打赏
  • 举报
回复
你可以写委托,给Form定义键盘事件。
dzk0620 2008-07-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bagegejin 的回复:]
C# code
this.KeyPreview = true;
this.KeyDown += new KeyEventHandler(frmNewBook_KeyDown);

}

void frmNewBook_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyData)
{
case Keys.F4:
Console.WriteLine("楼主给点分吧"); break;
//.........

[/Quote]
qyulang 2008-07-21
  • 打赏
  • 举报
回复
2楼的搞笑吧
再见品月 2008-07-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bagegejin 的回复:]
C# code
this.KeyPreview = true;
this.KeyDown += new KeyEventHandler(frmNewBook_KeyDown);

}

void frmNewBook_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyData)
{
case Keys.F4:
Console.WriteLine("楼主给点分吧"); break;
//.........

[/Quote]


就是这样的。。
je_ck 2008-07-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bagegejin 的回复:]
C# codethis.KeyPreview=true;this.KeyDown+=newKeyEventHandler(frmNewBook_KeyDown);

}voidfrmNewBook_KeyDown(objectsender, KeyEventArgs e)
{switch(e.KeyData)
{caseKeys.F4:
Console.WriteLine("楼主给点分吧");break;//.........}
}
[/Quote]
你太有才了,
peng_weida 2008-07-21
  • 打赏
  • 举报
回复
他们都说了
Ador3 2008-07-21
  • 打赏
  • 举报
回复
this.KeyDown += new KeyEventHandler(StudyFrm_KeyDown);
ainidewangziguilai 2008-07-21
  • 打赏
  • 举报
回复
study
yilanwuyu123 2008-07-21
  • 打赏
  • 举报
回复
mark
kevin520bj 2008-07-21
  • 打赏
  • 举报
回复
study
加载更多回复(11)

111,120

社区成员

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

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

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