Control.IsInputKey(Keys) Metode

Definisi

Menentukan apakah kunci yang ditentukan adalah kunci input reguler atau kunci khusus yang memerlukan pra-pemrosesan.

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

Parameter

keyData
Keys

Salah Keys satu nilai.

Mengembalikan

true jika kunci yang ditentukan adalah kunci input reguler; jika tidak, false.

Contoh

Contoh kode berikut menunjukkan kepada Anda cara mengambil IsInputKey alih metode untuk TextBox kontrol. Dalam contoh ini, TabTextBox kelas menangani kunci TAB. TabTextBox Ketika memiliki fokus dan pengguna menekan tombol TAB empat spasi ditambahkan pada titik penyisipan teks, menggantikan teks yang dipilih. Secara default, TextBox kontrol menangani tombol TAB dengan memindahkan fokus input ke kontrol berikutnya. Dalam hal ini, keypress tidak pernah mencapai penimpaan OnKeyDown metode. Untuk mencegah perilaku default ini, IsInputKey metode mengambil alih kembali true ketika pengguna menekan tombol TAB. Untuk semua penekanan kunci lainnya, IsInputKey penimpaan metode mengembalikan hasil pemanggilan versi kelas dasar metode.

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

Keterangan

IsInputKey Panggil metode untuk menentukan apakah kunci yang ditentukan oleh keyData parameter adalah kunci input yang diinginkan kontrol. Metode ini dipanggil selama pra-pemrosesan pesan jendela untuk menentukan apakah kunci input yang ditentukan harus diprosces sebelumnya atau dikirim langsung ke kontrol. Jika IsInputKey mengembalikan true, kunci yang ditentukan dikirim langsung ke kontrol. Jika IsInputKey mengembalikan false, kunci yang ditentukan telah diprosces dan hanya dikirim ke kontrol jika tidak dikonsumsi oleh fase pra-pemrosesan. Kunci yang telah diproses sebelumnya termasuk tombol TAB, RETURN, ESC, dan PANAH ATAS, PANAH BAWAH, PANAH KIRI, dan PANAH KANAN.

Berlaku untuk

Lihat juga