2009-09-23 98 views
0

我想註冊的時候按下「Tab」鍵,但不知道如何使用ProcessDialogKey。c#如何使用ProcessDialogKey捕獲特殊字符,如「Tab」,「Up」等

這是我得到:

this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.Keypress);  

private void Keypress(object sender, KeyPressEventArgs e) 
{ 
    MessageBox.Show("button: " + e.KeyChar); 
} 

這隻能拍攝普通字符,但我還需要其他類似的「標籤」等....

於是我研究了一下,發現許多人使用過ProcessDialogKey,但我不確定如何使用它。

這裏就是我的了:

protected override bool ProcessDialogKey(Keys keyData) 
{ 
    switch (keyData) 
    { 
     case Keys.Up: 
      MessageBox.Show("Up"); 
      break; 
     case Keys.Tab: 
      MessageBox.Show("Tab"); 
      break; 
     default: 
      break;   
    } 
} 

我得到的錯誤:'project.frm_test.ProcessDialogKey(System.Windows.Forms.Keys)': no suitable method found to override

我到底做錯了什麼?

和我一起承擔......我已經習慣到PHP :) 所以我還挺新的C#:)

回答

1

你的代碼工作,你的消息框只是顯示製表符,即空白空間。

強制轉換爲int,你會看到它的工作:

MessageBox.Show("button: " + (int) e.KeyChar); 

編輯: 否則看看這段代碼:

public Form1() 
{ 
    InitializeComponent(); 

    this.KeyPress += new KeyPressEventHandler(this.Form1_KeyPress); 
    this.KeyDown += new KeyEventHandler(this.Form1_KeyDown);    
} 

// Keypress only handles keys in the ascii range 
private void Form1_KeyPress(object sender, KeyPressEventArgs e) 
{ 
    MessageBox.Show("KeyPress: " + (int) e.KeyChar); 
} 

// Keydown will work for all keys 
private void Form1_KeyDown(object sender, KeyEventArgs e) 
{ 
    MessageBox.Show("KeyDown: " + e.KeyCode); 
}   
相關問題