Данная статья переведена с помощью средств машинного перевода. Чтобы просмотреть ее на английском языке, установите флажок Английский. Вы также можете просматривать английский текст во всплывающем окне, наводя указатель мыши на переведенный текст.
Перевод
Английский

Свойство KeyEventArgs.KeyCode

 

Опубликовано: Октябрь 2016

Получает код клавиатуры для KeyDown или KeyUp события.

Пространство имен:   System.Windows.Forms
Сборка:  System.Windows.Forms (в System.Windows.Forms.dll)

public Keys KeyCode { get; }

Значение свойства

Type: System.Windows.Forms.Keys

A Keys значение, являющееся кодом клавиши для события.

В следующем примере кода показано, как использовать KeyCode Свойства, чтобы определить, какая клавиша нажата.

Пример 1

В следующем примере кода показано, как использовать KeyDown событий с Help класс, чтобы отобразить всплывающую справку для пользователя приложения. В примере используется KeyEventArgs Свойства, переданные в метод обработчика событий для фильтрации для всех диалектов клавиши F1 с помощью модификатора. При нажатии клавиши F1, включающий любого сочетания модификатора любую разновидность Help класса отображается всплывающее окно, аналогичное ToolTip, почти элемента управления. Если пользователь нажимает сочетание клавиш ALT + F2, с дополнительной информацией отображается другое всплывающее окно справки.

private void textBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
    // Determine whether the key entered is the F1 key. If it is, display Help.
    if(e.KeyCode == Keys.F1 && (e.Alt || e.Control || e.Shift))
    {
        // Display a pop-up Help topic to assist the user.
        Help.ShowPopup(textBox1, "Enter your name.", new Point(textBox1.Bottom, textBox1.Right));
    }
    else if(e.KeyCode == Keys.F2 && e.Modifiers == Keys.Alt)
    {
        // Display a pop-up Help topic to provide additional assistance to the user.
        Help.ShowPopup(textBox1, "Enter your first name followed by your last name. Middle name is optional.",
            new Point(textBox1.Top, this.textBox1.Left));
    }
}

Пример 2

В следующем примере определяется, нажал ли пользователь ALT + E, и в том случае, если указатель мыши находится над TreeNode, позволяет пользователю изменять, TreeNode.

private void treeView1_KeyDown(object sender, KeyEventArgs e)
{
   /* If the 'Alt' and 'E' keys are pressed,
      * allow the user to edit the TreeNode label. */
   if(e.Alt && e.KeyCode == Keys.E)

   {
      treeView1.LabelEdit = true;
      // If there is a TreeNode under the mose cursor, begin editing. 
      TreeNode editNode = treeView1.GetNodeAt(
         treeView1.PointToClient(System.Windows.Forms.Control.MousePosition));
      if(editNode != null)
      { 
         editNode.BeginEdit();
      }
   }
}

private void treeView1_AfterLabelEdit(object sender, NodeLabelEditEventArgs e)
{
   // Disable the ability to edit the TreeNode labels.
   treeView1.LabelEdit = false;
}

Пример 3

В следующем примере определяется, нажал ли пользователь нечислового ключа и если да, отменяет KeyPress событий с помощью Handled свойство.

// Boolean flag used to determine when a character other than a number is entered.
private bool nonNumberEntered = false;

// Handle the KeyDown event to determine the type of character entered into the control.
private void textBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
    // Initialize the flag to false.
    nonNumberEntered = false;

    // Determine whether the keystroke is a number from the top of the keyboard.
    if (e.KeyCode < Keys.D0 || e.KeyCode > Keys.D9)
    {
        // Determine whether the keystroke is a number from the keypad.
        if (e.KeyCode < Keys.NumPad0 || e.KeyCode > Keys.NumPad9)
        {
            // Determine whether the keystroke is a backspace.
            if(e.KeyCode != Keys.Back)
            {
                // A non-numerical keystroke was pressed.
                // Set the flag to true and evaluate in KeyPress event.
                nonNumberEntered = true;
            }
        }
    }
    //If shift key was pressed, it's not a number.
    if (Control.ModifierKeys == Keys.Shift) {
        nonNumberEntered = true;
    }
}

// This event occurs after the KeyDown event and can be used to prevent
// characters from entering the control.
private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
    // Check for the flag being set in the KeyDown event.
    if (nonNumberEntered == true)
    {
        // Stop the character from being entered into the control since it is non-numerical.
        e.Handled = true;
    }
}

.NET Framework
Доступно с 1.1
Вернуться в начало
Показ: