2008-11-04 93 views

回答

5

我在這裏的答案只是基於不同的應用程序的實驗,而不是編程本身。

處理keydown。讓它成爲你邏輯的觸發器。這就是用戶期望的基於與其他應用程序交互的基礎。

例如,在記事本中嘗試一個按鍵,然後您會看到DOWN觸發記事本中的反應。它不等待UP。

0

一旦用戶按下按鍵,就會發生按鍵事件,按下按鍵後會釋放按鍵時發生按鍵事件。

所以,如果你使用鍵向上的事件,並且用戶按下一個鍵並持續5秒,那麼在他們放棄它之前什麼都不會發生。

(注:我什麼都不知道.NET,我只是用「鍵上」和「按下按鍵」在其它庫的事件。)

+0

你有你的鑰匙向上/鍵倒退。 – 2008-11-04 03:11:31

+0

哦,對,修好了,謝謝! – 2008-11-04 03:12:42

2

這不是真的「,這是一個更好的選擇。淨。」你真的不得不考慮你想如何迴應按鍵。如果你想知道某人在文本框中輸入的內容,通常最好等到他們發佈之後再嘗試確定他們在做什麼。但是,如果它像一個遊戲,你想要響應它被按下的瞬間,那麼你會比使用KeyDown。

KeyDown是鍵被按下的時刻。 KeyUp在密鑰被釋放後。

3

無論是.Net還是不重要,它都很重要用戶的期望。 Keydown是迴應四個方向鍵的好時機。字符輸入是響應可見字符輸入的好時機。 Keyup通常是迴應任何對文檔有影響的動作的好時機,但如果用戶希望立即生效,那麼keydown會更好。

1

有一點要考慮的是我已經與前一個問題:

如果您處理關鍵下來的東西,改變窗口或改變UI組件的焦點,那麼新的UI元素有時得到關鍵事件。

這發生在我上一份工作上。我們對一個表單進行了控制,在關鍵時刻,它會加載一個新表單。如果新表單加載速度足夠快,那麼在用戶釋放密鑰之前新表單將獲得焦點,並且新表單將獲得關鍵事件。我們對第二種形式的UI控件進行了反應,它有時會被無意中觸發。

故事的寓意是:保持一致。選擇一個或另一個,堅持下去:)

0

另一件要考慮的事情:當拿着修飾符時,使用keydown是很重要的。我通常使用keydown來設置變量,如ctrlPressed=true;然後使用鍵盤來取消該變量ctrlPressed=false;

我通常對所有字母數字字符使用keyPressed。

這種類型的系統允許您激活之類的東西CTRL + K + C ALA的Visual Studio

0

我的allmost八方通使用的KeyDown,因爲這樣我可以用e.Handled = True和停止該KeyEvent從文本框出行如果我想要的話,可以放在容器中,並放在事件中。您也可以在KeyUp中使用e.Handled,但隨後會「延遲」,因爲用戶輸入的密鑰將顯示在文本框中,如果您想要停止用戶輸入數字,則必須手動將其取出文本框。