Atalhos de teclado do WebBrowser
Eu tenho um controle WebBrowser exibindo alguns HTML.
Eu quero que o usuário seja capaz de copiar o documento inteiro, mas não fazer mais nada.
Eu defini oIsWebBrowserContextMenuEnabled
eWebBrowserShortcutsEnabled
propriedades parafalse
e eu quero lidar comKeyUp
e execute algum código quando o usuário pressionar Ctrl + C.
Como eu posso fazer isso?
O controle WebBrowser não suporta eventos de teclado.
Eu tentei usar o formulárioKeyUp
evento comKeyPreview
, mas não disparou nada.
EDITAR: Aqui está minha solução, inspirada na resposta 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);
}
}