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處理。
總結
以上是生活随笔為你收集整理的c# Winform Control 快速入门基本事件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 17、【常见算法】topN问题
- 下一篇: Chatreey AM08 迷你主机发布