Skróty klawiaturowe WebBrowser
Mam formant WebBrowser wyświetlający HTML.
Chcę, aby użytkownik mógł skopiować cały dokument, ale nie robić nic innego.
UstawiłemIsWebBrowserContextMenuEnabled
iWebBrowserShortcutsEnabled
właściwości dofalse
i chcę sobie poradzićKeyUp
i uruchom jakiś kod, gdy użytkownik naciśnie Ctrl + C.
Jak mogę to zrobić?
Formant WebBrowser nie obsługuje zdarzeń klawiatury.
Próbowałem użyć formularzaKeyUp
wydarzenie zKeyPreview
, ale wcale nie wystrzelił.
EDYTOWAĆ: Oto moje rozwiązanie, zainspirowane odpowiedzią Jerba.
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);
}
}