Cliquez ici pour en savoir plus sur les touches du clavier et les boutons de commande.
if (e.KeyCode == Keys.C && e.Modifiers == Keys.Control && e.Modifiers == Keys.Shift)
{
//Do work
}
else if (e.KeyCode == Keys.V && e.Modifiers == Keys.Control)
{
//Paste
}
Zombies de la guerre, de la guerre, de la guerre, de la guerreCtrl+Shift+Cnení funkční. Znovu jsem si je objednal a postavil jsem ho na vrchol, který de mohl být rušenímCtrl+C, un dokonce odstranilCtrl+Czjistit, zda to způsobuje problém. Stále à nefunguje. Vím, že je à asi něco velmi jednoduchého, ale nedokážu pochopit, co to je. Ajouter au moins 1 modifikátor + 1 kombinace kláves funguje dobře, jakmile přidám druhý modifikátor, když už nefunguje.
if (e.KeyCode == Keys.C && e.Modifiers == (Keys.Control | Keys.Shift))
{
//Do work
}
else if (e.KeyCode == Keys.V && e.Modifiers == Keys.Control)
{
//Paste
}
Avez-vous essayé e.Modifiers == (Keys.Control | Keys.Shift)
?
Pokud chcete povolitCtrluneShiftpak použijte bitovou OR (jako Keys
je Flags
enum)
if (e.KeyCode == Keys.C && e.Modifiers == (Keys.Control | Keys.Shift))
{
//Do work (if Ctrl-Shift-C is pressed, but not if Alt is pressed as well)
}
else if (e.KeyCode == Keys.V && e.Modifiers == Keys.Control)
{
//Paste (if Ctrl is only modifier pressed)
}
Pour être nezdaří, pokudAltje také stisknuto
Jiným způsobem de bylo přidat neviditelnou položku menu, přiřaditCtrl+Shift+Cna něj a zpracovat událost tam.
if ((Keyboard.Modifiers & ModifierKeys.Shift | ModifierKeys.Control) > 0)
Debugger.Launch();
Pour je, co jsem udělal proCtrl+ZZpět aCtrl+Shift+ZZnovu operaci a to fungovalo.
Private Sub Form_Main_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
Select Case e.KeyCode
Case Keys.Add
diagramView.ZoomIn()
Case Keys.Subtract
diagramView.ZoomOut()
Case Keys.Z
If e.Modifiers = Keys.Control + Keys.Shift Then
diagram.UndoManager.Redo()
ElseIf e.Modifiers = Keys.Control Then
diagram.UndoManager.Undo()
End If
End Select
End Sub
Essaye ça. Devrait se comporter comme vous le souhaitez, et c'est un peu plus simple.
if (e.Control)
{
if (e.Shift && e.KeyCode == Keys.C)
{
//Do work
}
else if (e.KeyCode == Keys.V)
{
//Paste
}
}
Vu que personne ne les mentionne, je vais simplement laisser la suggestion d'utiliser KeyEventArgs.KeyData:
if (e.KeyData == (Keys.C | Keys.Control | Keys.Shift)
{
//do stuff
//potentially use e.Handled = true
}
if (e.KeyData == (Keys.V | Keys.Control)
{
//do other stuff
//potentially use e.Handled = true
}
Cela ne devrait agir que sur des combinaisons de touches spécifiques, bien que l'ordre des modificateurs ne semble pas avoir d'importance, le premier est toujours la dernière touche enfoncée.
Et e.Handled = true devrait l’arrêter, bien que je ne connaisse pas les mécanismes spécifiques derrière cela.