當前位置:編程學習大全網 - 編程語言 - vb按鍵的gotfocus事件和click事件有什麽區別

vb按鍵的gotfocus事件和click事件有什麽區別

這兩個事件是經常同是發生的,如當單擊鼠標時往往先後觸發,但兩者有明顯的不同。

click事件是鼠標單擊時系統將相關消息傳遞給窗口而觸發的,直接與鼠標的單擊動作相關。窗口的代碼壹般是編程工具自動提供的框架,往往內定會獲得焦點,從而觸發getfocus,但在程序設計時我們可以修改代碼不讓窗口獲得焦點,從而不支觸發getfocus事件。

直接就getfocus事件來說,鍵盤操作也可觸發該事件(比如按Alt+Tab切換窗口,就會讓不同的窗口獲得焦點,按Tab就會讓不同的控件獲得焦點),也可直接用SetFocus直接讓該窗口獲得焦點,也就是說看起來不需要操作者的任何操作也是可以獲得焦點的。

所謂焦點,我們可以理解為系統的消息傳遞的對象,也就是鼠標,鍵盤等操作信息的目的點。

比如修改桌面上的文件名,假定初始的焦點就是桌面本身,當我們第壹次單擊桌面圖標時,首先桌面將獲得這個消息,同時通過座標判斷單擊的位置為壹圖標,就會將焦點定位到該圖標,此時該圖標即被選中。這時如果我們接著單擊文件名,這時單擊的消息直接傳給了圖標,負責圖標管理的代碼發現單擊的位置是文件名標簽,就會將標簽轉為活動狀態,並且進壹步將焦點賦給這個活動的文本框。這時如果我們敲鍵盤上的字,該消息就會直接傳遞給這個文本框,從而輸入了文字。當我們在桌面空白處單擊時,桌面發生click事件,會主動獲得焦點,而文本框發生失去焦點的事件,就會主動轉換到不可編輯的狀態,同時真正將磁盤上的文件名改過來。

click,LostFocus,getfocus這些事件當是由於操作者的操作產生時,與系統消息機制有關,但也可以通過代碼直接產生,相當於模擬用戶操作,當然能夠直接getfocus就不需要click了,因為前者是直接的,後者還不壹定能達到目的。但不可能存在直接的LostFocus,這在邏輯上講不通,因為焦點總是存在的,主動失支焦點那麽焦點交給誰?只能通過讓別的窗體得到焦點來間接產生該事件。但是可以重寫這些事件發生時的“反應”代碼onClick, onLostFocus, onGetFocus,從而對該事件的發生做出反應。

  • 上一篇:vb編寫圖形繞壹點旋轉
  • 下一篇:用編程器刷bios的方法可以祥細壹點嗎
  • copyright 2024編程學習大全網