C#预处理命令键
Message 结构
实现基于 Windows 的消息。
Message 结构包装 Windows 发送的消息。可使用该结构包装消息,并将其分配给窗口过程以进行调度。
不能直接创建 Message 结构。若要创建 Message 结构,请使用 Create 方法。为了提高效率,Message 结构使用其池中任一结构,而不是创建一个新结构的实例。
Control.ProcessCmdKey 方法
处理命令键。
C# |
protected virtual bool ProcessCmdKey ( ref Message msg, Keys keyData ) |
参数
msg
通过引用传递的 Message,它表示要处理的窗口消息。
keyData
Keys 值之一,它表示要处理的键。
返回值
如果字符已由控件处理,则为 true;否则为 false。
在消息预处理过程中调用此方法,以处理命令键。命令键是始终比常规输入键具有优先权的键。命令键的示例包括快捷键和菜单快捷方式。此方法必须返回 true,以指示它已经处理完命令键,或者 false,以指示该键不是命令键。仅当控件承载在 Windows 窗体应用程序中或充当 ActiveX 控件时,才调用此方法。
ProcessCmdKey 方法首先确定控件是否有 ContextMenu,如果有,则允许 ContextMenu 处理命令键。如果命令键不是菜单快捷方式,且控件有父级,那么该键传递到父级的 ProcessCmdKey 方法。净效果是命令键在控件层次结构中向上“冒”。除了用户按下的键外,键数据还指示哪些(如果有的话)修改键与该键同时按下。修改键包括 Shift、Ctrl 和 Alt 键。
给继承者的说明 在派生类中重写 ProcessCmdKey 方法时,控件应返回 true 以指示它已处理该键。对于未由该控件处理的键,应返回调用基类的 ProcessCmdKey 方法所得的结果。控件很少需要重写此方法(即使有的话)。
Control.ProcessDialogKey 方法
处理对话框键。
C# |
protected virtual bool ProcessDialogKey ( Keys keyData ) |
参数
keyData
Keys 值之一,它表示要处理的键。
返回值
如果键已由控件处理,则为 true;否则为 false。
在消息预处理过程中调用此方法,以处理对话框字符,比如 Tab、Return、Esc 和箭头键。只有当 IsInputKey 方法指示控件未在处理该键时,才调用此方法。ProcessDialogKey 方法只是将字符发送给父级的 ProcessDialogKey 方法,或者,在该控件没有父级的情况下返回 false。Form 类重写此方法来执行对话框键的实际处理。仅当控件承载在 Windows 窗体应用程序中或充当 ActiveX 控件时,才调用此方法。
给继承者的说明 在派生类中重写 ProcessDialogKey 方法时,控件应返回 true 以指示它已处理该键。对于未由该控件处理的键,应返回调用基类的 ProcessDialogChar 方法所得的结果。控件很少需要重写此方法(即使有的话)。
Control.IsInputKey 方法
确定指定的键是常规输入键还是需要预处理的特殊键。
C# |
protected virtual bool IsInputKey ( Keys keyData ) |
参数
keyData
Keys 值之一。
返回值
如果指定的键是常规输入键,则为 true;否则为 false。
调用 IsInputKey 方法以确定 keyData 参数指定的键是否是控件需要的输入键。此方法在窗口消息预处理过程中调用,以确定指定的输入键是应经过预处理还是直接发送到控件。如果 IsInputKey 返回 true,则将指定的键直接发送到控件。但是,如果 IsInputKey 返回 false,则指定的键需要预处理,且仅当预处理阶段不使用时,才能发送到控件。预处理的键包括 Tab、Return、Esc 以及向上键、向下键、向左键和向右键。
Control.ProcessDialogChar 方法
处理对话框字符。
C# |
protected virtual bool ProcessDialogChar ( char charCode ) |
参数
charCode
要处理的字符。
返回值
如果字符已由控件处理,则为 true;否则为 false。
此方法在消息预处理过程中调用,以处理对话框字符,比如控件助记键。只有当 IsInputChar 方法指示控件未在处理该字符时才调用此方法。ProcessDialogChar 方法只是将字符发送给父级的 ProcessDialogChar 方法,或者,在该控件没有父级的情况下返回 false。Form 类重写此方法来执行对话框字符的实际处理。仅当控件承载在 Windows 窗体应用程序中或充当 ActiveX 控件时,才调用此方法。
给继承者的说明 在派生类中重写 ProcessDialogChar 方法时,控件应返回 true 以指示它已处理该字符。对于未由该控件处理的字符,应返回调用基类的 ProcessDialogChar 方法所得的结果。控件很少需要重写此方法(即使有的话)。
Control.IsInputChar 方法
确定一个字符是否是控件可识别的输入字符。
C# |
protected virtual bool IsInputChar ( char charCode ) |
参数
charCode
要测试的字符。
返回值
如果字符应直接发送到控件且不必经过预处理,则为 true;否则为 false。
调用 IsInputChar 方法以确定 charCode 参数指定的字符是否是控件需要的输入字符。此方法在窗口消息预处理过程中调用,以确定指定的输入字符是应经过预处理还是直接发送到控件。如果 IsInputChar 返回 true,则将指定的字符直接发送到控件。但是,如果 IsInputChar 返回 false,则指定的字符需要预处理,且仅当预处理阶段不使用时,才能发送到控件。字符的预处理包括检查字符是否是另一个控件的助记键。
1