`
yuanlanxiaup
  • 浏览: 896430 次
文章分类
社区版块
存档分类
最新评论

Form窗体的KeyPreview属性的妙用(.NET C#)

 
阅读更多

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

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

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

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

KeyPreview的属性

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

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

Collapse 图像语法

C#
public <link xmlns:mshelp="http://msdn.microsoft.com/mshelp" keywords="T:System.Boolean">KeyPreview { get; set; }

属性值

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

Collapse 图像备注

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

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

Note注意

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

Note注意

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

分享到:
评论

相关推荐

    c# form窗体属性讲解.txt

    ### C# Form窗体属性详解 #### 一、概述 在C#的Windows Forms应用程序开发中,`Form`窗体是构建用户界面的基础组件。它提供了丰富的属性和方法,允许开发者自定义窗体的外观与行为。本文将详细介绍C# Form窗体中的...

    WinFrom属性大全

    在C# WinForm开发中,窗体(Form)是构建用户界面的基础,它包含了丰富的属性、方法和事件,使得开发者可以灵活地定制和控制应用程序的外观和行为。本篇文章主要聚焦于窗体的常用属性,这些属性对于理解和创建功能...

    .Net中的C#的所有控件集

    在.NET框架中,C#是一种广泛使用的编程语言,尤其在开发Windows桌面应用时,它的控件集提供了丰富的功能,使得开发者能够构建出功能强大的用户界面。本文将详细介绍C#窗体界面中最常用的控件及其属性、方法。 首先...

    c#中Form常用属性

    Form 是 C# 中的一个重要组件,它提供了大量的属性和方法来控制窗体的行为和外观。下面我们将详细介绍 Form 的常用属性。 1. Name 属性:用来获得或设置窗体的名称。这是一个字符串属性,用于标识窗体的名称。 2. ...

    个人练习工具——鼠标连点器(c#编写)

    热键技术通常依赖于“钩子”机制,这是一种系统级别的编程技巧,C#中的System.Windows.Forms.Keys枚举和Form类的KeyPreview属性等可以帮助实现这一功能。通过设置KeyPreview属性为true,窗体可以捕获所有键盘事件,...

    C#WinForm不规则锯齿问题

    - 在Form1的构造函数中,设置窗体的透明键(`Form.KeyPreview = true;`和`Form.TransparencyKey = Color.Fuchsia;`,其中Fuchsia是你选择的颜色,用于指定透明颜色)。 2. 创建子窗体Form2: - 设置`...

    C#常用form控件总结.DOC

    掌握这些基本属性和方法后,开发者可以灵活地创建和管理C# Form窗体,构建出满足需求的用户界面。此外,C# Form控件还包括大量的其他控件,如Button、TextBox、Label等,它们各自有自己的属性和方法,可以组合使用以...

    C#384-用键盘控制窗体的移动源代码

    本示例“C#384-用键盘控制窗体的移动源代码”聚焦于实现这样一个功能:允许用户通过键盘上的方向键来移动应用程序的窗口。这在某些特殊场景下非常实用,例如开发者调试或者无障碍访问的应用程序。 首先,我们需要...

    .net贪吃蛇

    7. **键盘监听**:通过Form的KeyPreview属性,可以捕获用户的键盘输入,改变蛇的方向。 8. **事件处理**:定时器的Tick事件触发蛇的移动,同时检查游戏状态。游戏结束时,可以弹出对话框提示用户游戏结束,并询问...

    C#自定义窗体美化

    1. **设置窗体背景**:可以使用`Form.BackColor`属性设置窗体的背景颜色,或者使用`BackgroundImage`属性设置背景图片。如果希望图片平铺或拉伸填充,可以调整`BackgroundImageLayout`属性。 2. **自定义边框**:...

    C# 用键盘控制窗体的移动 实例源码(系统操作)

    首先,我们需要理解窗体(Form)类是.NET Framework中的基础控件,用于创建图形用户界面。窗体不仅包含可视元素,如按钮、文本框等,还提供了一种方法来响应用户的输入事件,包括键盘事件。 在C#中,我们可以通过...

    c#常用控件及属性

    这些属性只是C#窗体控件的一部分,实际上还有更多功能强大的属性和方法可供开发者使用。通过熟练掌握这些基础控件及其属性,可以构建出功能丰富的用户界面,满足各种应用需求。同时,C#还支持自定义控件和扩展,使得...

    ESCToCloseForm_C#源码_

    在C#中,窗体类`Form`有一个内置的`Form.KeyPreview`属性,它决定着窗体是否先于其控件接收键盘事件。如果设置为`true`,窗体将首先捕获键盘事件,这样我们就可以在窗体级别处理ESC键,而不是让控件去处理。 下面是...

    c_控件知识,.net学习

    首先,我们来看窗体(Form)的基本属性: 1. `Name`属性:标识窗体的唯一名称,方便在代码中引用。 2. `WindowState`属性:控制窗体的状态,包括Normal(正常)、Minimized(最小化)和Maximized(最大化)。 3. `...

    c#控件介绍(太详细了)

    本文将详细介绍C#窗体的一些核心属性和方法,帮助开发者更好地理解和使用这些功能。 #### 一、窗体的核心属性 1. **Name属性**: - 用途:获取或设置窗体的名称。 - 应用场景:在代码中通过名称引用窗体。 - ...

    C#控件详细说明

    这篇详细说明将深入探讨C#中的窗体控件及其常用属性,帮助开发者更好地理解和使用这些元素。 首先,我们来看窗体(Form)控件,它是所有其他控件的容器。窗体控件拥有多个属性,用于定制其外观和行为: 1. **Name...

    无边框窗体(c#).rar

    例如,使用`Form.KeyPreview = true;`来预览键盘输入,然后在`Form.KeyDown`事件中处理Esc(关闭窗体)、F11(切换全屏)等快捷键。 6. **全屏模式** - 当需要全屏显示时,可以通过设置窗体的位置和大小使其填充...

    C#控件大全(史上最全的C#控件)

    根据给定文件的信息,我们可以总结出关于C#中窗体控件的重要属性和特性,以及它们如何被使用来创建高效且用户友好的图形用户界面(GUI)。以下是对这些知识点的详细解析: ### C#控件及其重要性 C#作为一种广泛使用...

    C#实现程序最小化到托盘,关闭后到托盘,热键实现隐藏和显示间切换

    3. **热键处理**:C#提供了`Form`类的`KeyPreview`属性,可以捕捉到所有在窗体上的按键事件。通过设置这个属性为`true`,我们可以捕获到用户按下热键的事件,然后在`KeyDown`事件中实现隐藏和显示窗体的功能。 以下...

    C#控件方法说明

    本文档旨在提供一份详尽的 C# 控件属性与方法指南,重点介绍窗体相关的属性及其使用方式。 #### 二、窗体属性详解 ##### 1. **Name 属性** - **功能**:设置或获取窗体的名称。 - **用途**:在代码中通过名称...

Global site tag (gtag.js) - Google Analytics