Tengo un problema con la configuración del mismo controlador de eventos para todos los controles en el formulario. Quiero controlar los botones f5-f7 presionados uniformemente en mi aplicación, por lo que trato de registrar el mismo controlador de eventos para todos los controles en el formulario. InsertéUn controlador de eventos para todos los controles en el formulario
foreach (System.Windows.Forms.Control cont in this.Controls)
cont.KeyDown += new System.Windows.Forms.KeyEventHandler(this.MainForm_KeyPress);
en función InitializeComponent() justo antes genera automáticamente ResumeLayout/PerformLayout llama. No importa el nombre MainForm_KeyPress, en realidad es un controlador de eventos KeyDown ahora.
También traté de insertar el código en mi función init() que se llama desde el constructor. Pero el resultado fue el mismo: el evento no ocurre cuando presiono las teclas. El foco está en uno de los botones del formulario.
Pero si implemento el controlador para uno de los botones usando la herramienta de diseño (copiar el nombre de la función al campo de evento KeyPress), el evento se levanta correctamente si el botón está enfocado.
¿Alguna idea de por qué foreach no funcionó?
¿Un manejador de eventos para gobernarlos a todos? – jason
Por favor, no ponga un prefijo a sus títulos con "C#:". Para eso son las etiquetas. –
@Jason - y en la oscuridad los datos, únelos. – TrueWill