Atajos de teclado de WebBrowser
Tengo un control WebBrowser mostrando algunos HTML.
Quiero que el usuario pueda copiar todo el documento, pero no hacer nada más.
He puesto elIsWebBrowserContextMenuEnabled
yWebBrowserShortcutsEnabled
propiedades parafalse
, y quiero manejarKeyUp
y ejecute algún código cuando el usuario presione Ctrl + C.
¿Cómo puedo hacer eso?
El control WebBrowser no admite eventos de teclado.
Traté de usar el formularioKeyUp
evento conKeyPreview
, pero no disparó en absoluto.
EDITAR: Aquí está mi solución, inspirada en la respuesta de Jerb.
class CopyableWebBrowser : WebBrowser {
public override bool PreProcessMessage(ref Message msg) {
if (msg.Msg == 0x101 //WM_KEYUP
&& msg.WParam.ToInt32() == (int)Keys.C && ModifierKeys == Keys.Control) {
DoCopy();
return true;
}
return base.PreProcessMessage(ref msg);
}
void DoCopy() {
Document.ExecCommand("SelectAll", false, null);
Document.ExecCommand("Copy", false, null);
Document.ExecCommand("Unselect", false, null);
}
}