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 以及向上键、向下键、向左键和向右键。
产品 | 版本 |
---|---|
.NET Framework | 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1 |
Windows Desktop | 3.0, 3.1, 5, 6, 7, 8, 9 |