c# Winform Control 快速入門基本事件


對於桌面應用,歸類總結一下最常用的事件

一 鼠標移動事件

 用戶行為:鼠標移入控件又移出控件

 

 

鼠標在控件外側,准備移入控件,無事件

 

移入控件邊界,接受到 MouseEnter 事件

 

 

移入之后,接收到 MouseMove 事件,事件不停的發送,一旦cursor變換,發送 MouseHover 事件

 

鼠標在控件內部移動,不停的發送 MouseMove 事件

 

鼠標移出到控件邊界,發送 MouseLeave 事件

 

移出后無事件

 

二 鼠標點擊事件

用戶行為:在控件內部,點擊一下

 

在控件內部按下鼠標左鍵,MouseDown 事件

 

在控件內部任意位置,松開鼠標左鍵,先發 Click 再發 MosueClick 事件,然后發 MouseUp 事件

在控件外部位置,松開鼠標左鍵,只有 MouseUp 事件

 

PS:在同一位置,雙擊鼠標:

第一次點擊:MouseDown -> Click -> MouseClick -> MouseUp

第二次點擊:MouseDown -> DoubleClick -> MouseDoubleClick -> MouseUp

 

三 鍵盤事件

用戶行為:在控件內部,按下鍵盤上的某個鍵,然后又松開

在鍵盤上按下A,不松開,事件順序 KeyDown -> KeyPress -> KeyDown -> KeyPress ... 如此循環下去

松開鍵盤上的A,發 KeyUp 事件

 

按下 Ctrl + A, 會有兩輪事件:

KeyDown(Ctrl) -> KeyDown(A) -> KeyPress -> KeyUp(A) -> KeyUp(Ctrl)

 

四 焦點事件

點擊文本框,光標開始在文本框內不停的閃爍,觸發一次 GotFocus 事件

在下面的任務欄上,點擊應用程序圖標,導致整個程序最小化 LostFocus,再點擊一次圖標,又顯示出程序, GotFocus

點擊其他應用程序 LostFocus,再顯示 GotFocus

 

五 拖拽事件

 

前提:TextBox AllowDrop 屬性需要設置成 true

 

把一個文件拖拽進入控件時,發生如下順序

剛拖入控件內部, DragEnter    (這時候可以設置Cursor,方法是 e.Effect = DragDropEffects.Move;)

在控件內部移動,DragMove

最終再控件內部松開,DragDrop,在外部松開 DragLeave

 

六 校驗事件

 

點擊控件,控件得焦點,Enter -> GotFocus

此后最小化再顯示,點擊其他應用程序再點回來,只會觸發 LostFocus -> Focus

但是點擊當前應用上其他控件時,該控件,LostFocus -> Leave -> Validating -> Validated

注意,點擊的其他控件如果設置了 CausesValidation = false; 就不會觸發 Validating 和 Validated

 

Validating:

校驗開始之前,一般放校驗邏輯,可以設置 e.Cancel = false,使得

 

1.控件不能失去焦點,等待用戶更正了值,再次嘗試失去焦點,再次執行邏輯。

這個行為可以設置父容器的 this.AutoValidate = System.Windows.Forms.AutoValidate.EnableAllowFocusChange

 

2. 這個時候默認不能關閉窗體,如果修改這個默認行為,需要這么做:

掛窗體 FormClosing 事件,加 e.Cancel = false;

 

也不一定要 e.Cancel = false, 只是做一些UI上的提示,但是Winform會認為數據正確,並在數據綁定下,將值更新到數據庫里。

 

Validated:

校驗開始之后,一般放校驗通過后的UI處理。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM