Obsługa danych wejściowych użytkownika
W tym temacie opisano główne zdarzenia klawiatury i myszy dostarczone przez System.Windows.Forms.Controlprogram . W przypadku obsługi zdarzenia autorzy kontrolek powinni zastąpić chronioną On
metodę EventName zamiast dołączać delegata do zdarzenia. Aby zapoznać się z przeglądem zdarzeń, zobacz Podnoszenie zdarzeń ze składnika.
Uwaga
Jeśli z zdarzeniem nie są skojarzone żadne dane, wystąpienie klasy EventArgs bazowej jest przekazywane jako argument do On
metody EventName .
Zdarzenia klawiatury
Typowe zdarzenia klawiatury obsługiwane przez kontrolkę to KeyDown, KeyPressi KeyUp.
Nazwa zdarzenia | Metoda zastąpienia | Opis zdarzenia |
---|---|---|
KeyDown |
void OnKeyDown(KeyEventArgs) |
Podniesione tylko wtedy, gdy klawisz jest początkowo naciskany. |
KeyPress |
void OnKeyPress (KeyPressEventArgs) |
Podniesione za każdym razem, gdy klawisz jest naciskany. Jeśli klucz zostanie zatrzymany, KeyPress zdarzenie zostanie podniesione z częstotliwością powtarzania zdefiniowaną przez system operacyjny. |
KeyUp |
void OnKeyUp(KeyEventArgs) |
Podniesione po wydaniu klucza. |
Uwaga
Obsługa wprowadzania klawiatury jest znacznie bardziej złożona niż zastępowanie zdarzeń w poprzedniej tabeli i wykracza poza zakres tego tematu. Aby uzyskać więcej informacji, zobacz Dane wejściowe użytkownika w formularzach systemu Windows.
Zdarzenia myszy
Zdarzenia myszy obsługiwane przez kontrolkę to MouseDown, , MouseEnter, MouseHover, MouseLeave, MouseMove, i MouseUp.
Nazwa zdarzenia | Metoda zastąpienia | Opis zdarzenia |
---|---|---|
MouseDown |
void OnMouseDown(MouseEventArgs) |
Podniesione po naciśnięciu przycisku myszy, gdy wskaźnik jest nad kontrolką. |
MouseEnter |
void OnMouseEnter(EventArgs) |
Podniesione po pierwszym wejściu wskaźnika do regionu kontrolki. |
MouseHover |
void OnMouseHover(EventArgs) |
Podniesione po umieszczeniu wskaźnika na kontrolce. |
MouseLeave |
void OnMouseLeave(EventArgs) |
Podniesione, gdy wskaźnik opuszcza obszar kontrolki. |
MouseMove |
void OnMouseMove(MouseEventArgs) |
Podniesione, gdy wskaźnik porusza się w regionie kontrolki. |
MouseUp |
void OnMouseUp(MouseEventArgs) |
Podniesione, gdy przycisk myszy jest zwalniany, gdy wskaźnik znajduje się nad kontrolką lub wskaźnik opuszcza region kontrolki. |
Poniższy fragment kodu przedstawia przykład zastąpienia MouseDown zdarzenia.
protected override void OnMouseDown(MouseEventArgs e) {
base.OnMouseDown(e);
if (!allowUserEdit) {
return;
}
Capture = true;
dragging = true;
SetDragValue(new Point(e.X, e.Y));
}
Protected Overrides Sub OnMouseDown(ByVal e As MouseEventArgs)
MyBase.OnMouseDown(e)
If Not (myAllowUserEdit) Then
Return
End If
Capture = True
dragging = True
SetDragValue(New Point(e.X, e.Y))
End Sub
Poniższy fragment kodu przedstawia przykład zastąpienia MouseMove zdarzenia.
protected override void OnMouseMove(MouseEventArgs e) {
base.OnMouseMove(e);
if (!allowUserEdit || !dragging) {
return;
}
SetDragValue(new Point(e.X, e.Y));
}
Protected Overrides Sub OnMouseMove(ByVal e As MouseEventArgs)
MyBase.OnMouseMove(e)
If (Not myAllowUserEdit Or Not dragging) Then
Return
End If
SetDragValue(New Point(e.X, e.Y))
End Sub
Poniższy fragment kodu przedstawia przykład zastąpienia MouseUp zdarzenia.
protected override void OnMouseUp(MouseEventArgs e) {
base.OnMouseUp(e);
if (!allowUserEdit || !dragging) {
return;
}
Capture = false;
dragging = false;
value = dragValue;
OnValueChanged(EventArgs.Empty);
}
Protected Overrides Sub OnMouseUp(ByVal e As MouseEventArgs)
MyBase.OnMouseUp(e)
If (Not myAllowUserEdit Or Not dragging) Then
Return
End If
Capture = False
dragging = False
Value = dragValue
OnValueChanged(EventArgs.Empty)
End Sub
Pełny kod źródłowy przykładu można znaleźć w FlashTrackBar
temacie How to: Create a Windows Forms Control That Shows Progress (Instrukcje: tworzenie kontrolki Formularzy systemu Windows pokazującej postęp).
Zobacz też
.NET Desktop feedback
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla