我正在檢查文本框的鍵碼,並且我想要在用戶按下Enter
時執行某個任務。c#Textbox KeyEventArgs - 每個字母被多次檢查
它一直在完美運行,但我現在試圖執行的任務通常是使用鼠標單擊完成的。因此,在該任務上的確定(一個FolderBrowserDialog
),它不斷調用對話框控件。
奇怪的是,即使調試器顯示我進了,如果分支,爲電子商務它表明{KeyData = LButton|MButton|Back}
,但KeyValue
仍然是13 ...
我想這可能是因爲該文本框記住上次進入..真的嗎?
在我的疑難解答中,我添加了一個布爾變量,所以我只在進入FolderBrowser時它是真實的,我試圖在瀏覽之後添加和刪除文本框中的空格,甚至清除文本框...每個企圖似乎讓事情變得更糟。
似乎我處於一個準無限循環 - 但它會在很多「ok」之後消失,然後逐步通過,我發現對於輸入到文本框中的每個字母,我花了4 CheckKeys 5輪。我不明白爲什麼......或者如何解決它。
我加了一個「e.Handled」,這對我沒有好處。
下面的代碼:
private void txtDir_TextChanged(object sender, EventArgs e)
{
this.txtDir.KeyUp += new System.Windows.Forms.KeyEventHandler(CheckKeys);
}
private void CheckKeys(object sender, System.Windows.Forms.KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
if (sender == txtDir && txtDir.Text != "" && System.IO.Directory.Exists(txtDir.Text))
{
btnBrowse_Click(this, e);
}
}
}
我爲什麼通過這個檢查這麼多次去?我可以添加一個不同的測試嗎?難道我做錯了什麼 ? (沒有設置爲默認操作,對於表單或文本框...)
謝謝。
我落得這樣做正是這樣,見上面我的答案,謝謝你回答這個。 – Thalia