Control.IsInputKey(Keys) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Определяет, является ли заданная клавиша обычной клавишей ввода или специальной клавишей, нуждающейся в предварительной обработке.
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, в точке вставки текста добавляются четыре пробела, заменяя любой выделенный текст. По умолчанию элемент управления обрабатывает клавишу TAB, TextBox перемещая фокус ввода на следующий элемент управления. В этом случае нажатие клавиши никогда не достигает OnKeyDown переопределения метода. Чтобы предотвратить такое поведение по умолчанию, IsInputKey переопределение метода возвращает значение true
, когда пользователь нажимает клавишу TAB. Для всех остальных нажатий 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 и СТРЕЛКА ВВЕРХ, СТРЕЛКА ВНИЗ, СТРЕЛКА ВЛЕВО и СТРЕЛКА ВПРАВО.