Aracılığıyla paylaş


Control.IsInputKey(Keys) Yöntem

Tanım

Belirtilen anahtarın normal bir giriş anahtarı mı yoksa ön işleme gerektiren özel bir anahtar mı olduğunu belirler.

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

Parametreler

keyData
Keys

Değerlerden Keys biri.

Döndürülenler

true belirtilen anahtar normal bir giriş anahtarıysa; aksi takdirde , false.

Örnekler

Aşağıdaki kod örneği, bir TextBox denetimin yöntemini nasıl geçersiz kılabileceğinizi IsInputKey gösterir. Bu örnekte sınıfı SEKME TabTextBox tuşunu işler. TabTextBox odak olduğunda ve kullanıcı SEKME tuşuna bastığında, seçili metnin yerine metin ekleme noktasına dört boşluk eklenir. Varsayılan olarak denetim, TextBox giriş odağını bir sonraki denetime taşıyarak SEKME tuşunu işler. Bu durumda, tuş basıcı yöntemi geçersiz kılmaya OnKeyDown hiçbir zaman ulaşmaz. Bu varsayılan davranışı önlemek için, IsInputKey kullanıcı SEKME tuşuna bastığında yöntemi geçersiz kılma işlevi döndürülüyor true . Diğer tüm tuş basıları için, IsInputKey yöntemi geçersiz kılma yöntemin temel sınıf sürümünü çağırmanın sonucunu döndürür.

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

Açıklamalar

IsInputKey parametresi tarafından belirtilen anahtarın denetimin keyData istediği bir giriş anahtarı olup olmadığını belirlemek için yöntemini çağırın. Bu yöntem, belirtilen giriş anahtarının önceden işlenip işlenmeyeceğini veya doğrudan denetime gönderilmesini belirlemek için pencere iletisi ön işlemesi sırasında çağrılır. döndürürse IsInputKeytrue, belirtilen anahtar doğrudan denetime gönderilir. döndürürse IsInputKeyfalse, belirtilen anahtar önceden işlenmiştir ve yalnızca ön işleme aşaması tarafından tüketilmediyse denetime gönderilir. Önceden işlenen tuşlar TAB, RETURN, ESC ve YUKARI OK, AŞAĞI OK, SOL OK ve SAĞ OK tuşlarını içerir.

Şunlara uygulanır

Ayrıca bkz.