2012-10-20 103 views
2

我對C#和編程一般都很陌生。基本上我的問題是我試圖做一個簡單的代碼,它使用鍵輸入,但是當我運行(調試)程序時,它根本不能識別任何鍵輸入。 KeyPreview設置爲true,但它似乎還沒有做任何事情。你能告訴我我做錯了什麼嗎?謝謝。如何讓Visual C#工作室識別鍵輸入

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 

namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     public List<string> list = new List<string>(); 
     public Form1() 
     { 
      InitializeComponent(); 
      KeyPreview = true; 
     } 
     private void Form1_KeyDown(object sender, KeyEventArgs e) 
    { 
     if (e.KeyCode == Keys.F3) 
     { 
      list.Add("OMG!"); 
     } 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     MessageBox.Show(list[0]); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 

    } 
} 
} 
+1

「Form1_KeyDown」是否正確鏈接到您的表單事件?你是用手還是從設計師那裏創造它的?您甚至不需要KeyPreview來捕獲鍵盤輸入。 – LightStriker

+0

謝謝你的回答。您能否解釋一下「與您的表單事件正確關聯」是什麼意思?是的,我剛寫入表單代碼。謝謝 – user1761590

+0

@ user1761590你也可以使用'protected override void OnKeyDown(KeyEventArgs e) { base.OnKeyDown(e); }' –

回答

0

在表單描述中寫入方法並不會將其鏈接到某人按某個鍵時觸發的事件。在設計器內部(可以預覽窗體並允許您放下控件的視圖)中,在屬性面板中,頂部有一個閃電圖標。如果按下它,它將列出以該形式公開的所有事件。您可以雙擊KeyDown事件,它將會被自動創建正確的方法,它會增加:

this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Form1_KeyDown); 

內由設計者自動生成了.Designer.cs文件。 只有當表單中的控件具有焦點時,您才需要KeyPreview ...可能是這種情況。

+0

非常感謝,它現在正常工作:) – user1761590