DataGridView.ProcessDialogKey(Keys) Metoda

Definicja

Przetwarza klucze, takie jak TAB, ESCAPE, ENTER i klawiszy strzałek, służące do kontrolowania okien dialogowych.Processes keys, such as the TAB, ESCAPE, ENTER, and ARROW keys, used to control dialog boxes.

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.A bitwise combination of Keys values that represents the key or keys to process.

Zwraca

Boolean

true Jeśli klucz został przetworzony; w przeciwnym razie false .true if the key was processed; otherwise, false.

Wyjątki

Naciśnięcie klawisza spowoduje, że kontrolka przekroczy tryb edycji, ale EditType Właściwość bieżącej komórki nie wskazuje klasy, która dziedziczy z Control i implementuje IDataGridViewEditingControl .The key pressed would cause the control to enter edit mode, but the EditType property of the current cell does not indicate a class that derives from Control and implements IDataGridViewEditingControl.

Ta akcja spowodowałaby zatwierdzenie wartości komórki lub przejście do trybu edycji, ale w źródle danych wystąpił błąd, który uniemożliwia wykonanie akcji i nie ma obsługi dla tego DataError zdarzenia lub program obsługi ustawił ThrowException Właściwość na true .This action would commit a cell value or enter edit mode, but an error in the data source prevents the action and either there is no handler for the DataError event or the handler has set the ThrowException property to true.

Przykłady

Poniższy przykład kodu demonstruje, jak zmienić zachowanie klawisza ENTER w DataGridView podklasy, zastępując ProcessDataGridViewKey ProcessDialogKey metody i.The following code example demonstrates how to change the behavior of the ENTER key in a DataGridView subclass by overriding the ProcessDataGridViewKey and ProcessDialogKey methods. W przykładzie klawisz ENTER ma takie samo zachowanie jak klawisz Strzałka w prawo, co ułatwia użytkownikowi edytowanie wielu komórek w pojedynczym wierszu danych.In the example, the ENTER key has the same behavior as the RIGHT ARROW key, making it easier for a user to edit multiple cells in a single row of data.

public class CustomDataGridView : DataGridView
{
    [System.Security.Permissions.UIPermission(
        System.Security.Permissions.SecurityAction.LinkDemand,
        Window = System.Security.Permissions.UIPermissionWindow.AllWindows)]
    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);
    }

    [System.Security.Permissions.SecurityPermission(
        System.Security.Permissions.SecurityAction.LinkDemand, Flags = 
        System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)]
    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, aby obsłużyć dane wejściowe z klawiatury, które nie są obsługiwane przez hostowaną kontrolkę edycji.This method is called in edit mode to handle keyboard input that is not handled by the hosted editing control.

Jeśli naciśnięcie klawisza jest określone jako nie jako klucz wejściowy, zostanie wysłane do klasy podstawowej w celu przetworzenia.If a key press is determined to not be an input key, it will be sent to the base class for processing.

Uwagi dotyczące dziedziczenia

Podczas zastępowania tej metody formant powinien powrócić, true Aby wskazać, że przetworzył klucz.When overriding this method, a control should return true to indicate that it has processed the key. Dla kluczy, które nie są przetwarzane przez formant, zwróć wynik podstawowej wersji tej metody.For keys that are not processed by the control, return the result of the base version of this method.

Dotyczy