我希望在WebBrowser控件中展示一个YouTube视频,但我想禁用所有用户交互(不允许鼠标点击、键盘事件等)。
我捕获了所有控件的预览、鼠标和键盘事件,并在加载的HTML文档中添加了一些处理程序,但都没有成功:
void webBrowser1_DocumentCompleted( object sender, WebBrowserDocumentCompletedEventArgs e )
{
if(webBrowser1.Document != null) {
var doc = webBrowser1.Document;
doc.Body.Style = "overflow:hidden";
doc.Click += htmlDoc_Click;
doc.MouseDown += htmlDoc_MouseDown;
doc.MouseMove += htmlDoc_MouseMove;
webBrowser1.Document.Body.Click += new HtmlElementEventHandler(htmlDoc_Click);
webBrowser1.Document.Body.MouseDown += new HtmlElementEventHandler(Document_MouseDown);
webBrowser1.Document.Body.MouseUp += new HtmlElementEventHandler(Document_MouseMove);
webBrowser1.Document.Body.MouseUp += new HtmlElementEventHandler(Document_MouseUp);
HtmlElement head = doc.GetElementsByTagName("head")[0];
HtmlElement mscript = doc.CreateElement("script");
IHTMLScriptElement element = (IHTMLScriptElement)mscript.DomElement;
element.text = "function handleMouseEvent(e) { "
+ "var evt = (e==null ? event:e); "
+ "return true; } "
+ "document.onmousedown = handleMouseEvent; "
+ "document.onmouseup = handleMouseEvent; "
+ "document.onclick = handleMouseEvent; ";
head.AppendChild(mscript);
}
}
同时,在WebBrowser控件的前面叠加一个透明的控件也是可以的。
e.Handled = True;
和e.SuppressKeyPress = True
。 - Sasha