2014-04-09 27 views
0

這裏是一個帶有按鈕(未顯示)和文本框的表單的代碼。按除功能鍵以外的任意鍵會導致KeyDown事件按預期觸發,文本框被選中,光標閃爍並且隨後鍵擊的字符出現在文本框中。然而,當按下功能鍵時,儘管選擇了文本框,光標不會閃爍,並且下一次擊鍵的字符不會出現在文本框中。隨後按鍵的字符確實按預期顯示。C# - KeyDown事件,函數鍵和文本框

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_KeyDown(object sender, KeyEventArgs e) 
    { 
     textBox1.Select(); 
    } 
} 

我已經能夠通過重寫給ProcessCmdKey方法來解決這個問題,但我很好奇,想知道如何使用的KeyDown做到這一點。

謝謝!

回答

1

如你所說,現在讀取F [1-12]按鍵的首選方法是覆蓋ProcessCmdKey方法。但是,允許KeyDown處理F鍵的一種(現在已被棄用)方法是將表單的KeyPreview屬性設置爲true。但是,正如您在this文章中看到的那樣,此方法存在缺陷,因此使用ProcessCmdKey更安全。

+0

抱歉沒有提及它,我已將KeyPreview屬性設置爲true,並且問題仍然存在。事實上,沒有這個設置,KeyDown事件就不會啓動。 – user3517113

+0

@ user3517113你想用'textBox.Select()'完成什麼?如果你想把文本框放到焦點上,你需要使用'textBox1.Focus()'來代替。這可能是爲什麼。 – The6P4C

+0

我確實嘗試了Focus()方法,但沒有解決問題。 – user3517113