[英]Ms access vba sink (catch) keydown event from a formless subform
我正在開發一個訪問程序,用於維護其他應用程序的測試數據。 它是通用程序,不適用於特定應用程序。 假定測試數據存儲在數據庫表中。 因為我的程序事先不知道哪些表是要聲明的應用程序的一部分,所以它從應用程序數據庫中讀取元數據,並為每個表創建鏈接表。 為了輸入和維護數據,我有一個帶有子窗體控件的窗體。 此子窗體控件沒有預定義的源對象。 通過將源對象屬性設置為“ table。[linkedtablename]”,可以將子窗體用於數據輸入。 當用戶從列表中選擇另一個應用程序表時,該另一個表將分配給子表單。 這個效果很好。 現在,我需要處理此子窗體中的事件。 因為子窗體源對象不是窗體,所以這不是很明顯。 沒有參數時,捕獲子窗體的事件是沒有問題的。 您可以編寫以下代碼:
Me.subformname.form.oncurrent = "=customoncurrent()"
但是如何捕捉按鍵事件呢? 帶有2個參數(鍵代碼,shift)引發此事件。
我不能寫:
Me.subformname.form.onkeydown = "=customkeydown()"
在運行時,VBA會引發錯誤,說明事件過程聲明中缺少參數。
我試圖使用'withevents'子句,但沒有成功。 也許我對該條款的可能性了解得很少。
這個問題可以解決嗎?
標記
您這里有一個很好的,簡約的解決方案。 但是,由於您添加了捕獲子表單事件的要求,因此它變得太簡單了!
您可以采取幾種方法,但我建議這樣做:
這可能比其他方法要少。
順便說一句,不要在表單類模塊中使用WithEvents。 那只是在乞求麻煩。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.