我想在鍵盤上的每個鍵擊發生時創建一個事件。到目前爲止,我這樣做:在鍵盤上創建事件
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