zoukankan      html  css  js  c++  java
  • 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处理。

  • 相关阅读:
    Linux文件管理系统
    添加硬盘分区
    SWPFILE实现(增加swap空间)
    磁盘配额
    javascript插件uploadify简单实现文件上传
    Java继承--子类的实例化过程
    Java继承--子父类中的构造函数
    Java继承--覆盖
    设计模式——单例设计模式
    在vim中,使用可视化拷贝(剪切)粘贴文本
  • 原文地址:https://www.cnblogs.com/chenyingzuo/p/12111736.html
Copyright © 2011-2022 走看看