如何讓Form窗體接收keydown事件

2021-09-08 02:10:57 字數 898 閱讀 2664

當窗體上沒有任何其他控制項的時候,窗體是可以直接響應這些訊息的。

但是當窗體上有其他控制項時,會發現窗體再也不會響應這些訊息了,因為這些訊息都由其上的控制項所處理掉並且不再發給父窗體。

但是響應窗體上的按鍵訊息是很有必要的。form類有乙個keypreview的屬性,可以讓它接收得到按鍵訊息。它的定義如下:

keypreview的屬性

獲取或設定乙個值,該值指示在將鍵事件傳遞到具有焦點的控制項前,窗體是否將接收此鍵事件。

命名空間:system.windows.forms

程式集:system.windows.forms(在system.windows.forms.dll 中)。

屬性值如果窗體將接收所有鍵事件,則為true;如果窗體上當前選定控制項接收鍵事件,則為false。預設為alse。

備註當此屬性設定為true 時,窗體將接收所有keypress、keydown 和 keyup 事件。在窗體的事件處理程式處理完該擊鍵後,然後將該擊鍵分配給具有焦點的控制項。例如,如果keypreview 屬性設定為true,而且當前選定的控制項是textbox,則在窗體的事件處理程式處理了擊鍵後,textbox 控制項將接收所按的鍵。要僅在窗體級別處理鍵盤事件並且不允許控制項接收鍵盤事件,請將窗體的keypress 事件處理程式中的keypresseventargs.handled 屬性設定為 true。

可以使用此屬性處理應用程式中的大部分擊鍵事件,並可以處理擊鍵事件或呼叫適當的控制項來處理擊鍵事件。例如,當應用程式使用功能鍵時,可能希望在窗體級別處理這些擊鍵,而不是為可能接收擊鍵事件的每個控制項編寫**。

注意如果窗體沒有可見或啟用的控制項,則該窗體自動接收所有鍵盤事件。

注意可以對窗體上的控制項進行程式設計,以取消它所接收的任何擊鍵。由於控制項從不向窗體傳送這些擊鍵,因此無論 keypreview 為何種設定,窗體永遠都無法看到它們。

怎麼讓彈出的窗體Form顯示在螢幕的某乙個座標位置

怎麼讓彈出的窗體form顯示在螢幕的某乙個座標位置 delphi windows sdk api 怎麼讓彈出的窗體form顯示在螢幕的某乙個座標位置 例如 form.show 有postion屬性 可以讓窗體顯示在中間的 具體的自己設定看看 設定left top屬性 設定form.left,from...

如何讓form表單在enter鍵入時不提交

form表單只有乙個text和乙個button每當我鍵入enter的時候就重新整理。很是鬱悶,直接在form上onsumbit false。才行。下面是我查詢到的結果。radio和checkbox在fx下也會觸發提交表單,在ie下不會 由於 onsubmit 控制代碼可以取消表單的提交,所以它對於進...

如何讓窗體總在桌面最前面顯示

呼叫api函式setwindowpos可達到這一目的。該函式的語法是 setwindowpos hwnd,hwndinsetafter,x,y,cx,xy,wflags 其中 hwnd 窗體的控制代碼 handle hwndinsetafter 它就是決定是否 總在前 的引數,應用中設定為 hwnd...