zoukankan      html  css  js  c++  java
  • 如何让Form窗体接收keydown事件

    在使用.Net Framework编写窗体应用程序的时候,有时有需要响应窗体的按键消息。

           当窗体上没有任何其他控件的时候,窗体是可以直接响应这些消息的。

           但是当窗体上有其他控件时,会发现窗体再也不会响应这些消息了,因为这些消息都由其上的控件所处理掉并且不再发给父窗体。

           但是响应窗体上的按键消息是很有必要的。Form类有一个KeyPreview的属性,可以让它接收得到按键消息。它的定义如下:

            KeyPreview的属性

            获取或设置一个值,该值指示在将键事件传递到具有焦点的控件前,窗体是否将接收此键事件。

           命名空间:System.Windows.Forms
           程序集:System.Windows.Forms(在system.windows.forms.dll 中)。

           属性值

           如果窗体将接收所有键事件,则为true;如果窗体上当前选定控件接收键事件,则为false。默认为alse。

    备注

           当此属性设置为true 时,窗体将接收所有KeyPress、KeyDown 和 KeyUp 事件。在窗体的事件处理程序处理完该击键后,然后将该击键分配给具有焦点的控件。例如,如果KeyPreview 属性设置为true,而且当前选定的控件是TextBox,则在窗体的事件处理程序处理了击键后,TextBox 控件将接收所按的键。要仅在窗体级别处理键盘事件并且不允许控件接收键盘事件,请将窗体的KeyPress 事件处理程序中的KeyPressEventArgs.Handled 属性设置为 true。

           可以使用此属性处理应用程序中的大部分击键事件,并可以处理击键事件或调用适当的控件来处理击键事件。例如,当应用程序使用功能键时,可能希望在窗体级别处理这些击键,而不是为可能接收击键事件的每个控件编写代码。

           注意

           如果窗体没有可见或启用的控件,则该窗体自动接收所有键盘事件。
     

           注意

           可以对窗体上的控件进行编程,以取消它所接收的任何击键。由于控件从不向窗体发送这些击键,因此无论 KeyPreview 为何种设置,窗体永远都无法看到它们。

  • 相关阅读:
    GLASS产品下载
    Google earth engine批量下载MODIS数据并导出
    获取浏览器路径'?'开头,&开头的参数
    Js Vue全屏切换显示 指定div切换全屏显示
    关于Js 进一步应用遇到的小问题--总结
    自定义基于element UI 换行步骤条
    Vue 自定义封装树形表格组件
    js 解决在Vue中阻止重复提交、多次触发、节流函数、防止短时间多次触发问题
    Vue中使用 echarts 实现动态配置参数及类型显示不同形状的图表配置、可视化的echarts图表组件
    数据结构 -- 链表的整表创建
  • 原文地址:https://www.cnblogs.com/myitm/p/2210534.html
Copyright © 2011-2022 走看看