Tengo una aplicación de Windows en C# /. NET. Necesito hacer algunos atajos de teclado para navegar entre diferentes formas. ¿Cómo hago atajos de teclado en .NET?Cómo hacer atajos de teclado en .NET
Respuesta
Puede usar P/invocar al register a global hotkey on the system. Si no desea algo global, siempre puede manejar eventos de KeyPress en todos sus formularios.
Puede controlar el evento Control.KeyPress e inspeccionar la combinación de teclas para hacer atajos de teclado:
Asumo que su tratando de poner en práctica Control ?
atajos tipo como la copia camino y pasta de trabajo?
Puede crear un controlador genérico KeyDown
y KeyUp
que adjunte a cada formulario. Cada vez que obtenga un KeyDown
almacene la clave en una lista (para mantener presionada una tecla y presionar otra). Cada vez que agrega una clave a la lista, verifique si la lista contiene alguna de sus combinaciones de teclas de método abreviado. Si es así, ejecuta el código que necesites.
Por cada KeyUp
caso, asegúrese de que está eliminando de la lista (sólo es necesario para comprobar el acceso directo en KeyDown
adiciones
EDIT:. Hice una búsqueda rápida y encontramos este misma solución implementada:
class KeyboardShortcuts
{
public static void Window_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
{
if (m_keysDownList.Contains(e.Key) == false)
{
m_keysDownList.Add(e.Key);
Debug.WriteLine(e.Key.ToString() + " Down");
}
CheckForKeyCombos();
}
public static void Window_KeyUp(object sender, System.Windows.Input.KeyEventArgs e)
{
m_keysDownList.Remove(e.Key);
Debug.WriteLine(e.Key.ToString() + " Up");
}
public static void CheckForKeyCombos()
{
if (m_keysDownList.Contains(System.Windows.Input.Key.LeftCtrl))
{
if (m_keysDownList.Contains(System.Windows.Input.Key.A))
{
if (m_keysDownList.Contains(System.Windows.Input.Key.C))
{
// Clear list before handeling (Dialogue boxes
// can hinder the listening for key up events, leaving
// keys in list - so clear first).
ClearKeysDownList();
// Handle Ctrl + A + C Combo
HandleCtrlACCombo();
}
}
}
}
private static void ClearKeysDownList()
{
m_keysDownList.Clear();
}
public static void HandleCtrlACCombo()
{
if (handleCtrlACComboDelegate != null)
{
handleCtrlACComboDelegate();
}
}
// Need a delegate instance for each combo
public delegate void HandleCtrlACComboDelegate();
public static HandleCtrlACComboDelegate handleCtrlACComboDelegate;
private static List<System.Windows.Input.Key> m_keysDownList = new List<System.Windows.Input.Key>();
}
puede ver la solución completa que esta es una cita del here (simplemente desplazarse a la parte inferior, ya que es en ese sitio mal que no hablamos el nombre de.
Tales cosas se suelen hacer usando ganchos de Windows. He aquí un artículo de MSDN que muestran cómo trabajar con ellos:
Si su formulario primario tiene botones o menús cual el usuario selecciona para abrir sub formularios, puede agregar una tecla de acceso muy simple mediante la adición de un signo &
al atributo .Text.
Por ejemplo, si tiene un botón como Options
puede modificar su texto de la siguiente manera: &Options
. Hacer esto hará que Alt + O active el botón del formulario principal.
Alternativamente, si desea teclas de acceso rápido como Ctrl + O para abrir un formulario, usted tiene que suscribirse al evento de la forma principal KeyDown
, y buscar esa combinación de teclas:
private void FormMain_KeyDown(object sender, KeyEventArgs e)
{
if (ModifierKeys == Keys.Control && e.KeyCode == Keys.O))
// open form
}
Tenga en cuenta que puede necesitar establecer la propiedad KeyPreview
de su formulario en True.
Finalmente, los elementos del menú de tira de herramientas tienen una propiedad ShortcutKeys
que puede definir en el panel de propiedades y VS agregará automáticamente el código requerido al archivo Designer para admitir el atajo de teclado para activar el elemento del menú.
Paso N. °1 juego
KeyPreview = True;
Paso No.2
if (e.Alt && e.KeyCode == Keys.C)
{
//your function
}
- 1. Atajos de teclado
- 2. Atajos de teclado de WebBrowser
- 3. Atajos de teclado con jQuery
- 4. atajos de teclado iPhone/iPad?
- 5. Atajos de teclado en WPF MVVM?
- 6. Atajos de teclado en la aplicación web
- 7. aplicación iPhone/iPad usando atajos de teclado?
- 8. : los atajos de teclado personalizados no funcionan?
- 9. Atajos de teclado para Android Emulator?
- 10. Mejores prácticas para diseñar atajos de teclado
- 11. Eclipse - Lista de atajos de teclado predeterminados
- 12. Atajos de teclado de Visual Studio 2010
- 13. Horribles atajos de teclado de VMware
- 14. jQuery UI datepicker: Configurar atajos de teclado
- 15. ¿Cómo desactivo los atajos de teclado en Matplotlib?
- 16. Atajos de teclado disponibles para aplicaciones web
- 17. ¿Cómo asignar atajos de teclado al control de cinta WPF?
- 18. Atajos de teclado en Google Chrome/Extensiones de cromo
- 19. Atajos de teclado de Eclipse en Mac OSX
- 20. Asignación de atajos de teclado de Visual Studio en Xcode
- 21. Eclipse: poner atajos de teclado en configuraciones de lanzamiento específicos
- 22. Asignación de atajos de teclado a componentes QML
- 23. Cambiar atajos de teclado en RAD Studio 2010
- 24. Restringir atajos de teclado en el editor TinyMCE
- 25. Menú desplegable de Tkinter con atajos de teclado?
- 26. atajos de teclado Eclipse para comparar/diff ver?
- 27. Atajos de teclado de Mac con Nimbus LAF
- 28. Manejo de atajos de teclado robusto usando JavaScript
- 29. ¿Alguna buena implementación de los atajos de teclado estilo Fogbugz?
- 30. Atajos de teclado para P4 Diff/P4 Carpeta Diff
favor, ampliar su respuesta. –