C 窗體無法接受Keydown事件

2021-06-20 11:33:34 字數 951 閱讀 3660

問題一描述:當新建乙個窗體時,新增keydown事件後,會正常處理,但是當新增有控制項時,比如button,textbox,不會觸發窗體的keydown事件,也沒有呼叫keydown事件的處理程式。

原因:由於窗體中新增了控制項,於是焦點就在其中乙個控制項上,如果我們要處理的事件窗體和獲取焦點的控制項都同時擁有,系統就會將鍵盤的操作鍵值直接傳遞給這個獲取焦點的控制項。,就會出現上面這個問題。

解決方案:此時需要將窗體的keypreview屬性設定為true,將系統傳入的鍵值先傳遞給窗體,再傳遞給控制項。msdn關於keypreview的說明:如果窗體將接收所有鍵事件,則為 true;如果窗體上當前選定控制項接收鍵事件,則為 false。預設為 false。更多詳情請參見msdn:

問題二描述:將keypreview值設定成true後按功能鍵和數字鍵都沒有問題,但是按方向鍵任然沒有觸發keydown事件。

原因:方向鍵是作為系統鍵來處理的,預設方向鍵的作用是移動焦點,系統處理完了就不會將鍵盤的鍵值傳遞個窗體或獲取焦點的控制項,也不會觸發窗體的keydown事件。 在沒有控制項的時候沒有其他的控制項可以移動焦點,系統不處理,這才會將鍵值傳遞給窗體,觸發keydown事件

解決方案:覆蓋預設的系統鍵處理方式,遇到方向鍵,則直接返回,系統不處理,這樣鍵值就會被傳遞到窗體,觸發keydown事件。

覆蓋預設的系統鍵處理方式的**:

protected override bool processdialogkey(keys keydata)

if (keydata == keys.up || keydata == keys.down ||

keydata == keys.left || keydata== keys.right)

return false;

else

returnbase.processdialogkey(keydata);

}

tomcat無法接受post資料

在專案中由於前端傳輸的資料過大,後台無法接受post資料.原因 tomcat預設傳輸資料大小為2m 嘗試方法 tomcat 配置檔案 server.xml 中 maxpostsize 52428800 其中 maxpostsize 0 如果配置成 0 可以解決,嘗試了一下,發現可以接受成功,但是之後...

如果使用php無法接受post的值

在出現這種情況的時候需要檢查我們header頭中的引數 content type 的值 php input可以讀取沒有處理過的post資料。相較於 http raw post data而言,它給記憶體帶來的壓力較小,並且不需要特殊的php.ini設定。php input不能用於enctype mul...

C 子窗體重新整理父窗體

子窗體 from2 重新整理父窗體 from1 父窗體中有重新整理方法 refersh 1.所有權法 from1中 form2 f2 new form2 f2.owner this f2.show form2中 form1 f1 form1 this.owner f1.refersh 2.自身傳遞法...