Existe-t-il un moyen de démarrer une méthode en C# si une touche est enfoncée? Par exemple, Esc?Appuyez sur la touche Echap pour appeler la méthode
Répondre
J'écris l'application WinForms. L'utilisateur remplit la zone de texte et s'il veut supprimer tout, il clique simplement esc clé sur le clavier
Je pense que vous devez gérer the KeyDown event.
Vous devez également définir la propriété de formulaire 'KeyPreview' sur ** True ** afin de capturer les événements KeyPress – whiteshooz
Est-ce que vous écrivez une application Console, une application WinForms ou autre chose? Essayez-vous de capturer la touche ESC à tout moment (quelle que soit la fenêtre ou l'application ciblée) ou autre chose?
Plus de contexte requis.
Si vous écrivez une application de la console, alors vous devriez commencer à regarder les choses comme Console.ReadKey ...
http://msdn.microsoft.com/en-us/library/system.console.readkey.aspx
J'écris l'application WinForms. Utilisateur remplit la zone de texte et s'il veut tout supprimer, il clique simplement sur la touche Echap sur le clavier – raimis
utiliser l'événement OnKeyPress de votre zone de texte et en cas
if(e.KeyCode==Keys.Escape)
{
yourTextBox.Text = string.Empty;
}
drôle, cela ne semble pas fonctionner du tout, et il a cinq voix up? 'private void Form1_KeyDown (expéditeur d'objet, KeyEventArgs e) { if (e.KeyCode == Keys.Escape) {...' Cela fonctionne. Mais e.KeyChar est un type de caractère, Keys.Escape ne l'est pas et l'opérateur == ne peut pas être appliqué. –
@MasterPeter en effet, c'était KeyCode ... – Gregoire
pour travailler ce code besoin de Form.KeyPreview = true; –
Comme d'autres l'ont mentionné, gérer l'événement KeyDown
ou KeyUp
du contrôle approprié. L'événement KeyPress
travaillerait pour la clé évasion aussi bien, mais il ne se déclenche pas pour certaines touches, comme Maj, Ctrl ou ALt.
Si vous souhaitez exécuter cette fonction à chaque fois que l'utilisateur appuie sur la touche Escape, vous souhaitez probablement gérer l'événement sur le formulaire. Si vous faites cela, vous devrez probablement également définir la propriété KeyPreview
du formulaire sur true. Cela permettra au contrôle Form de recevoir l'événement même si le focus est actuellement dans l'un des contrôles enfants.
Si vous voulez que le comportement est spécifique à un contrôle, comme compensation le texte dans une zone de texte qui a actuellement le focus, vous devez gérer l'événement KeyDown
ou KeyUp
du contrôle TextBox
. De cette façon, votre gestionnaire d'événements ne sera pas déclenché si l'utilisateur appuie sur la touche d'échappement en dehors de la zone de texte.
Dans certaines situations, vous pouvez empêcher les contrôles enfants de gérer le même événement que celui que vous venez de gérer. Vous pouvez utiliser la propriété SuppressKeyPress
sur la KeyEventArgs
classe pour contrôler ce comportement:
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Escape)
{
MessageBox.Show("Escape key pressed");
// prevent child controls from handling this event as well
e.SuppressKeyPress = true;
}
}
Merci pour l'indication utile de KeyPreview! – Peopleware
Vous devez passer la propriété sous forme « KeyPreview » true ou vos événements ne se déclenche pas. Gérer ces événements seul ne fera rien même si les événements sont corrects. Il vous semblera que rien ne se passe réellement même si vous avez souscrit les gestionnaires d'événements appropriés.
Avec Event KeyPress ...
//Escape
if (e.KeyChar == '')
{
this.DialogResult = DialogResult.Cancel;
e.Handled = true;
}
'(char) Keys.Escape' est identique à' '\ x1B'' est identique à '(char) 27' mais ** n'est pas la même chose que **' '' ' – xmojmr
Vous pouvez également utiliser l'événement KeyUp. Je le préfère cependant.
private void Window_KeyUp(object sender, System.Windows.Input.KeyEventArgs e) {
if (e.Key == Key.Escape) {
//WHAT WILL HAPPEN INSERT HERE
}
}
d'abord dans les propriétés font> KeyPreview: True
Puis:
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Escape)
{
//call your method here
}
}
En cas où quelqu'un recherchait comment le faire dans une application console
if (Console.ReadKey().Key == ConsoleKey.Escape)
{
return;
}
- 1. ASP.NET: Appeler la méthode codebehind sur Entrée Appuyez sur la touche dans le formulaire
- 2. L'appui sur la touche Echap de la boîte de dialogue Ouvrir un fichier déclenche une touche JavaScript. Appuyez sur
- 3. IME - Comment gérer la touche Appuyez sur
- 4. Activer Intellisense IPhone sans appuyer sur la touche Echap
- 5. Asp.Net Search, trouvé des changements sur la touche Appuyez sur
- 6. Comment mapper la touche de menu ("touche d'application") à la touche Echap de vim?
- 7. C# Saut de boucle sur la touche Appuyez sur
- 8. Exécution de la méthode Jquery lorsque vous appuyez sur la touche entrée
- 9. Pour fermer ou ne pas fermer: une application de dialogue lorsque vous appuyez sur "Echap"
- 10. ASP.Net ImageButton Volant Entrée touche Appuyez sur
- 11. Capturez une touche «Echap» dans les navigateurs WebKit
- 12. Capture d'une touche 'supprimer' Appuyez sur
- 13. Comment éviter le son ding lorsque vous appuyez sur la touche Escape pendant la mise au point d'un TEdit?
- 14. est-il un moyen d'utiliser entrée ("Appuyez sur une touche pour continuer") sur la version 2.6
- 15. Appuyez sur la touche "retour" quand un processus tué était sur la pile
- 16. Appuyez sur la touche de capture sans placer un élément d'entrée sur la page?
- 17. Comment fermer une image sur une touche d'échappement, appuyez sur?
- 18. Windows Forms - Appuyez sur la touche pour activer le bouton de soumission.
- 19. Syntaxe pour appeler la méthode basé sur un modèle
- 20. Comment capturer une touche de suppression appuyez sur C#?
- 21. widget étiquette GWT recevoir le focus lorsque vous appuyez sur la touche tab
- 22. Obtention de la touche de modification enfoncée dans CGEvent appuyez sur
- 23. Appuyez sur la touche "Gauche" dans une entrée de texte par programmation
- 24. Comment désactiver le comportement de soumission automatique lorsque vous appuyez sur la touche Entrée?
- 25. appeler une méthode super classe avec une touche
- 26. .NET 3.5 GridView - Sélectionnez plusieurs lignes avec la touche Ctrl appuyez sur
- 27. ProgressDialog disparaît lorsque vous appuyez sur la touche "Recherche" du téléphone
- 28. arrêter l'activité suivante si la touche d'accueil ou appuyez sur le dos est appuyé - Android
- 29. En flex, appuyez sur toutes les touches avec la touche de retour
- 30. Désactiver Echap fermer pour colorbox
en utilisant quoi? Console? Forme? ASP.NET? – Gregoire
J'utilise les formulaires – raimis
Notez que si votre formulaire a un ['CancelButton'] configuré (http://msdn.microsoft.com/library/system.windows.forms.form.cancelbutton.aspx), appuyez sur ** ESC ** va automatiquement cliquer sur ce bouton. Selon vos besoins, cela peut être une bonne approche. –