KeyEventArgs Osztály
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
public ref class KeyEventArgs : EventArgs
[System.Runtime.InteropServices.ComVisible(true)]
public class KeyEventArgs : EventArgs
[<System.Runtime.InteropServices.ComVisible(true)>]
type KeyEventArgs = class
inherit EventArgs
Public Class KeyEventArgs
Inherits EventArgs
- Öröklődés
- Attribútumok
Példák
Az alábbi példakód bemutatja, hogyan lehet észlelni egy billentyűnyomó állapotát.
Példa 1
Az alábbi kódpéldából megtudhatja, hogyan használhatja az KeyDown eseményt az osztálysal az Help előugró stílusú súgó megjelenítéséhez az alkalmazás felhasználójának. A példa az KeyEventArgs eseménykezelő metódusnak átadott tulajdonságokat használja az F1 kulcs módosító kulccsal való lenyomásának összes változatára. Amikor a felhasználó lenyomja az F1 bármely olyan változatát, amely bármilyen billentyűzetmódosítót tartalmaz, az Help osztály egy előugró ablakot jelenít meg a vezérlőhöz hasonló ToolTipmódon. Ha a felhasználó lenyomja az ALT+F2 billentyűkombinációt, egy másik súgó előugró ablak jelenik meg további információkkal.
// This example demonstrates how to use the KeyDown event with the Help class to display
// pop-up style help to the user of the application. The example filters for all variations
// of pressing the F1 key with a modifier key by using the KeyEventArgs properties passed
// to the event handling method.
// When the user presses any variation of F1 that includes any keyboard modifier, the Help
// class displays a pop-up window, similar to a ToolTip, near the control. If the user presses
// ALT + F2, a different Help pop-up is displayed with additional information. This example assumes
// that a tTextBox control, named textBox1, has been added to the form and its KeyDown
// event has been contected to this event handling method.
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.", 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.",
Point(textBox1->Top,this->textBox1->Left) );
}
}
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));
}
}
Private Sub textBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles textBox1.KeyDown
' Determine whether the key entered is the F1 key. If it is, display Help.
If e.KeyCode = Keys.F1 AndAlso (e.Alt OrElse e.Control OrElse e.Shift) Then
' Display a pop-up Help topic to assist the user.
Help.ShowPopup(textBox1, "Enter your name.", New Point(textBox1.Bottom, textBox1.Right))
ElseIf e.KeyCode = Keys.F2 AndAlso e.Modifiers = Keys.Alt Then
' 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, Me.textBox1.Left))
End If
End Sub
2. példa
Az alábbi példa azt határozza meg, hogy a felhasználó lenyomta-e az ALT+E billentyűkombinációt TreeNode, és hogy az egérmutató egy fölött van-e, lehetővé teszi a felhasználó számára a szerkesztést 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 mouse cursor, begin editing.
TreeNode^ editNode = treeView1->GetNodeAt( treeView1->PointToClient( Control::MousePosition ) );
if ( editNode != nullptr )
{
editNode->BeginEdit();
}
}
}
void treeView1_AfterLabelEdit( Object^ /*sender*/, NodeLabelEditEventArgs^ /*e*/ )
{
// Disable the ability to edit the TreeNode labels.
treeView1->LabelEdit = false;
}
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 mouse 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;
}
Private Sub treeView1_KeyDown(sender As Object, _
e As KeyEventArgs) Handles treeView1.KeyDown
' If the 'Alt' and 'E' keys are pressed,
' allow the user to edit the TreeNode label.
If e.Alt And e.KeyCode = Keys.E Then
treeView1.LabelEdit = True
' If there is a TreeNode under the mouse cursor, begin editing.
Dim editNode As TreeNode = treeView1.GetNodeAt( _
treeView1.PointToClient(System.Windows.Forms.Control.MousePosition))
If (editNode IsNot Nothing) Then
editNode.BeginEdit()
End If
End If
End Sub
Private Sub treeView1_AfterLabelEdit(sender As Object, _
e As NodeLabelEditEventArgs) Handles treeView1.AfterLabelEdit
' Disable the ability to edit the TreeNode labels.
treeView1.LabelEdit = False
End Sub
3. példa
Az alábbi példa azt határozza meg, hogy a felhasználó lenyomott-e nem numerikus kulcsot, és ha igen, a tulajdonság használatával megszakítja-e az KeyPress eseményt Handled .
// Boolean flag used to determine when a character other than a number is entered.
private:
bool nonNumberEntered;
// Handle the KeyDown event to determine the type of character entered into the control.
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.
void textBox1_KeyPress( Object^ /*sender*/, System::Windows::Forms::KeyPressEventArgs^ e )
{
// Check for the flag being set in the KeyDown event.
if ( nonNumberEntered)
{ // Stop the character from being entered into the control since it is non-numerical.
e->Handled = true;
}
}
// 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)
{
// Stop the character from being entered into the control since it is non-numerical.
e.Handled = true;
}
}
' Boolean flag used to determine when a character other than a number is entered.
Private nonNumberEntered As Boolean = False
' Handle the KeyDown event to determine the type of character entered into the control.
Private Sub textBox1_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) _
Handles textBox1.KeyDown
' 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 OrElse e.KeyCode > Keys.D9 Then
' Determine whether the keystroke is a number from the keypad.
If e.KeyCode < Keys.NumPad0 OrElse e.KeyCode > Keys.NumPad9 Then
' Determine whether the keystroke is a backspace.
If e.KeyCode <> Keys.Back Then
' A non-numerical keystroke was pressed.
' Set the flag to true and evaluate in KeyPress event.
nonNumberEntered = True
End If
End If
End If
'If shift key was pressed, it's not a number.
If Control.ModifierKeys = Keys.Shift Then
nonNumberEntered = true
End If
End Sub
' This event occurs after the KeyDown event and can be used
' to prevent characters from entering the control.
Private Sub textBox1_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) _
Handles textBox1.KeyPress
' Check for the flag being set in the KeyDown event.
If nonNumberEntered = True Then
' Stop the character from being entered into the control since it is non-numerical.
e.Handled = True
End If
End Sub
Megjegyzések
Egy KeyEventArgs, amely megadja a felhasználó által lenyomott kulcsot, és hogy a módosító billentyűk (CTRL, ALT és SHIFT) egyszerre lettek-e lenyomva, mindegyik KeyDown vagy KeyUp esemény együtt lesz átadva.
Az KeyDown esemény akkor következik be, ha a felhasználó lenyom egy billentyűt. Az KeyUp esemény akkor következik be, amikor a felhasználó kiadja a kulcsot. Ismétlődő KeyDown események történnek minden alkalommal, amikor a kulcs ismétlődik, ha a kulcs le van állítva, de csak egy KeyUp esemény jön létre, amikor a felhasználó kiadja a kulcsot.
Az KeyPress esemény akkor is bekövetkezik, ha egy kulcs le van nyomva. A KeyPressEventArgs függvény minden KeyPress eseményhez ad át egy karaktert, és megadja az egyes billentyűnyomások eredményeként létrejött karaktert.
Az eseménymodellről további információt az Események kezelése és emelése című témakörben talál.
Konstruktorok
| Name | Description |
|---|---|
| KeyEventArgs(Keys) |
Inicializálja a KeyEventArgs osztály új példányát. |
Tulajdonságok
| Name | Description |
|---|---|
| Alt |
Beolvas egy értéket, amely jelzi, hogy az ALT billentyűt lenyomták-e. |
| Control |
Beolvas egy értéket, amely jelzi, hogy a CTRL billentyűt lenyomták-e. |
| Handled |
Lekéri vagy beállít egy értéket, amely jelzi, hogy az eseményt kezelték-e. |
| KeyCode |
Lekéri egy vagy KeyUp több esemény billentyűzetkódjátKeyDown. |
| KeyData | |
| KeyValue |
Lekéri egy vagy KeyUp több KeyDown esemény billentyűzetértékét. |
| Modifiers |
Lekéri egy vagy KeyUp több KeyDown esemény módosító jelzőit. A jelölők jelzik, hogy a CTRL, a SHIFT és az ALT billentyűk melyik kombinációját nyomták le. |
| Shift |
Beolvas egy értéket, amely jelzi, hogy a SHIFT billentyűt lenyomták-e. |
| SuppressKeyPress |
Lekéri vagy beállít egy értéket, amely jelzi, hogy a kulcseseményt át kell-e adni az alapul szolgáló vezérlőnek. |
Metódusok
| Name | Description |
|---|---|
| Equals(Object) |
Meghatározza, hogy a megadott objektum egyenlő-e az aktuális objektummal. (Öröklődés forrása Object) |
| GetHashCode() |
Ez az alapértelmezett kivonatoló függvény. (Öröklődés forrása Object) |
| GetType() |
Lekéri az Type aktuális példányt. (Öröklődés forrása Object) |
| MemberwiseClone() |
Az aktuális Objectpéldány sekély másolatát hozza létre. (Öröklődés forrása Object) |
| ToString() |
Az aktuális objektumot jelképező sztringet ad vissza. (Öröklődés forrása Object) |