Control.IsInputKey(Keys) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
确定指定的键是常规输入键还是需要预处理的特殊键。
protected:
virtual bool IsInputKey(System::Windows::Forms::Keys keyData);
protected virtual bool IsInputKey (System.Windows.Forms.Keys keyData);
abstract member IsInputKey : System.Windows.Forms.Keys -> bool
override this.IsInputKey : System.Windows.Forms.Keys -> bool
Protected Overridable Function IsInputKey (keyData As Keys) As Boolean
参数
返回
如果指定的键是常规输入键,则为 true
;否则为 false
。
示例
下面的代码示例演示如何重写 IsInputKey 控件的 TextBox 方法。 在此示例中, TabTextBox
类处理 TAB 键。
TabTextBox
当 具有焦点并且用户按下 TAB 键时,将在文本插入点添加四个空格,替换任何选定的文本。 默认情况下,控件 TextBox 通过将输入焦点移动到下一个控件来处理 TAB 键。 在这种情况下,键压永远不会达到 OnKeyDown 方法重写。 为了防止此默认行为,当用户按下 TAB 键时, IsInputKey 方法重写将返回 true
。 对于所有其他键压, IsInputKey 方法重写将返回调用 方法的基类版本的结果。
using System.Windows.Forms;
public class Form1 : Form
{
public Form1()
{
FlowLayoutPanel panel = new FlowLayoutPanel();
TabTextBox tabTextBox1 = new TabTextBox();
tabTextBox1.Text = "TabTextBox";
panel.Controls.Add(tabTextBox1);
TextBox textBox1 = new TextBox();
textBox1.Text = "Normal TextBox";
panel.Controls.Add(textBox1);
this.Controls.Add(panel);
}
}
class TabTextBox : TextBox
{
protected override bool IsInputKey(Keys keyData)
{
if (keyData == Keys.Tab)
{
return true;
}
else
{
return base.IsInputKey(keyData);
}
}
protected override void OnKeyDown(KeyEventArgs e)
{
if (e.KeyData == Keys.Tab)
{
this.SelectedText = " ";
}
else
{
base.OnKeyDown(e);
}
}
}
Imports System.Windows.Forms
Public Class Form1
Inherits Form
Public Sub New()
Dim panel As New FlowLayoutPanel()
Dim tabTextBox1 As New TabTextBox()
tabTextBox1.Text = "TabTextBox"
panel.Controls.Add(tabTextBox1)
Dim textBox1 As New TextBox()
textBox1.Text = "Normal TextBox"
panel.Controls.Add(textBox1)
Me.Controls.Add(panel)
End Sub
End Class
Class TabTextBox
Inherits TextBox
Protected Overrides Function IsInputKey( _
ByVal keyData As System.Windows.Forms.Keys) As Boolean
If keyData = Keys.Tab Then
Return True
Else
Return MyBase.IsInputKey(keyData)
End If
End Function
Protected Overrides Sub OnKeyDown( _
ByVal e As System.Windows.Forms.KeyEventArgs)
If e.KeyData = Keys.Tab Then
Me.SelectedText = " "
Else
MyBase.OnKeyDown(e)
End If
End Sub
End Class
注解
IsInputKey调用 方法以确定 参数指定的keyData
键是否是控件所需的输入键。 此方法在窗口消息预处理期间调用,以确定指定的输入键是应预处理还是直接发送到控件。 如果 IsInputKey 返回 true
,则指定的键将直接发送到 控件。 如果 IsInputKey 返回 false
,则对指定的键进行预处理,并且仅当预处理阶段未使用时,才会将其发送到控件。 预处理的键包括 TAB、RETURN、ESC 以及向上键、向下键、向左键和向右键。
适用于
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈