我想在键盘上的每个键击发生时创建一个事件。到目前为止,我这样做:在键盘上创建事件
namespace WindowsFormsApplication1
{
public partial class SpaceInvadors : Form
{
SpaceInvadors sInvaders;
public SpaceInvadors()
{
InitializeComponent();
KeyStroke keyStroke = new KeyStroke();
sInvaders=new SpaceInvadors(keyStroke);
}
public SpaceInvadors(KeyStroke keyStroke)
{
keyStroke.keyStroked += Form1_KeyDown;//How does that chaining to the event work?
keyStroke.keyStroked += Form1_KeyUp;
}
private void Form1_KeyDown(object sender, KeyArgs e)
{
if (e.KeyCode == Keys.Q)
{
Application.Exit();
}
}
}
public class KeyStroke
{
public event EventHandler<KeyArgs> keyStroked;
public void Add(Keys key)
{
// I need to know how to obtain this key:
KeyArgs keyAr = new KeyArgs(key);
keyRisen(keyAr);
}
public void keyRisen(KeyArgs kA)
{
if (keyStroked != null)
keyStroked(this, kA);
}
}
public class KeyArgs : EventArgs
{
public Keys KeyCode { get; set; }
public KeyArgs(Keys key)
{
KeyCode = key;
}
}
另外,我怎么能所有的时间听取被按下了哪个键,而不是只有一次
它显示下方keyDownEventArgs E中的线。说我错过了集会?!? – 2011-04-09 18:20:04
我实现了你的代码,并删除了我的..但它显示在KeyDownEventArgs下面的蓝线...说我缺少一个参考,我是否需要添加一些使用.. :( – 2011-04-09 18:25:29
每当你缺少一个参考,谷歌确切的类和方法/属性,你会得到命名空间的层次结构,这将有助于你得到正确的引用和导入语句。例如,如果谷歌“形式KeyDownEventArgs”我发现第三谷歌条目是“KeyEventArgs类(系统。 Windows.Forms“(http://msdn.microsoft.com/en-us/library/system.windows.forms.keyeventargs.aspx)。 – richard 2011-04-09 18:28:34