Udostępnij za pośrednictwem


DataGridView.ProcessDialogKey(Keys) Metoda

Definicja

Przetwarza klucze, takie jak TAB, ESCAPE, ENTER i ARROW, używane do sterowania oknami dialogowymi.

protected:
 override bool ProcessDialogKey(System::Windows::Forms::Keys keyData);
protected override bool ProcessDialogKey (System.Windows.Forms.Keys keyData);
override this.ProcessDialogKey : System.Windows.Forms.Keys -> bool
Protected Overrides Function ProcessDialogKey (keyData As Keys) As Boolean

Parametry

keyData
Keys

Bitowa kombinacja Keys wartości reprezentujących klucz lub klucze do przetworzenia.

Zwraca

true jeśli klucz został przetworzony; w przeciwnym razie , false.

Wyjątki

Naciśnięcie klawisza spowoduje, że kontrolka wejdzie w tryb edycji, ale EditType właściwość bieżącej komórki nie wskazuje klasy pochodzącej z Control klasy i implementuje IDataGridViewEditingControlelement .

Ta akcja spowoduje zatwierdzenie wartości komórki lub wprowadzenie trybu edycji, ale błąd w źródle danych uniemożliwia wykonanie akcji i nie ma procedury obsługi dla DataError zdarzenia lub program obsługi ustawił ThrowException właściwość na true.

Przykłady

W poniższym przykładzie kodu pokazano, jak zmienić zachowanie klucza ENTER w podklasie DataGridView przez zastąpienie ProcessDataGridViewKey metod i ProcessDialogKey . W tym przykładzie klucz ENTER ma takie samo zachowanie jak klawisz STRZAŁKA W PRAWO, co ułatwia użytkownikowi edytowanie wielu komórek w jednym wierszu danych.

public class CustomDataGridView : DataGridView
{
    protected override bool ProcessDialogKey(Keys keyData)
    {
        // Extract the key code from the key value. 
        Keys key = (keyData & Keys.KeyCode);

        // Handle the ENTER key as if it were a RIGHT ARROW key. 
        if (key == Keys.Enter)
        {
            return this.ProcessRightKey(keyData);
        }
        return base.ProcessDialogKey(keyData);
    }

    protected override bool ProcessDataGridViewKey(KeyEventArgs e)
    {
        // Handle the ENTER key as if it were a RIGHT ARROW key. 
        if (e.KeyCode == Keys.Enter)
        {
            return this.ProcessRightKey(e.KeyData);
        }
        return base.ProcessDataGridViewKey(e);
    }
}
Public Class CustomDataGridView
    Inherits DataGridView

    <System.Security.Permissions.UIPermission( _
        System.Security.Permissions.SecurityAction.LinkDemand, _
        Window:=System.Security.Permissions.UIPermissionWindow.AllWindows)> _
    Protected Overrides Function ProcessDialogKey( _
        ByVal keyData As Keys) As Boolean

        ' Extract the key code from the key value. 
        Dim key As Keys = keyData And Keys.KeyCode

        ' Handle the ENTER key as if it were a RIGHT ARROW key. 
        If key = Keys.Enter Then
            Return Me.ProcessRightKey(keyData)
        End If

        Return MyBase.ProcessDialogKey(keyData)

    End Function

    <System.Security.Permissions.SecurityPermission( _
        System.Security.Permissions.SecurityAction.LinkDemand, Flags:= _
        System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)> _
    Protected Overrides Function ProcessDataGridViewKey( _
        ByVal e As System.Windows.Forms.KeyEventArgs) As Boolean

        ' Handle the ENTER key as if it were a RIGHT ARROW key. 
        If e.KeyCode = Keys.Enter Then
            Return Me.ProcessRightKey(e.KeyData)
        End If

        Return MyBase.ProcessDataGridViewKey(e)

    End Function

End Class

Uwagi

Ta metoda jest wywoływana w trybie edycji w celu obsługi danych wejściowych klawiatury, które nie są obsługiwane przez hostowaną kontrolkę edycji.

Jeśli naciśnięcie klawisza nie jest kluczem wejściowym, zostanie wysłane do klasy bazowej na potrzeby przetwarzania.

Uwagi dotyczące dziedziczenia

Podczas zastępowania tej metody kontrolka powinna wrócić true , aby wskazać, że przetworzyła klucz. W przypadku kluczy, które nie są przetwarzane przez kontrolkę, zwróć wynik podstawowej wersji tej metody.

Dotyczy

Zobacz też