处理Web浏览器控件的单击事件

我想添加webBrowser控件的click事件。 这是我的代码。

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication2 { public partial class Form1 : Form { HtmlDocument htmlDoc; public Form1() { InitializeComponent(); OpenFileDialog open = new OpenFileDialog(); open.ShowDialog(); this.webBrowser1.Navigate(open.FileName); } private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { if (webBrowser1.Document != null) { htmlDoc = webBrowser1.Document; htmlDoc.Click += new HtmlElementEventHandler(htmlDoc_Click); } } private void htmlDoc_Click(object sender, HtmlElementEventArgs e) { MessageBox.Show("Click"); } } } 

我希望它能够显示.ppt文件。 可以显示,但是当我点击webBrowser时,没有显示消息框。 还有其他解决方案吗? 谢谢

我正在使用ObjectForScripting来做这些事情。 它允许JavaScript调用C#-Method。 让JavaScript对事件做出反应,这样更容易,而且你不需要MSHTML。 这里很好地解释了 。 您将需要using System.Runtime.InteropServices; 为了它的工作,所以应用程序知道ComVisible-Annotation。

您不必是JavaScript-pro就可以使用它。 例如:只需添加如下按钮:

  

它将在showPpt中调用名为showPpt的方法。 请记住:您也可以使用C#创建HTML。 这样您就可以在文档中存储信息。 这是一个完整的例子:

 public partial class frmBrowser : Form { HtmlDocument doc; [ComVisible(true)] public class ScriptManager { private frmBrowser mForm; public ScriptManager(frmBrowser form) { mForm = form; } public void recall(string statusID) { mForm.RestoreStatus(statusID); } } public frmBrowser() { InitializeComponent(); this.webBrowser.ObjectForScripting = new ScriptManager(this); string url = "file:///" + Application.StartupPath + "\\start\\start.html"; this.webBrowser.Navigate(url); } private void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { doc = webBrowser.Document; showRecent(); } private void showRecent() { HtmlElement divRecent = doc.GetElementById("recent_cont"); List status = Center.DB.GetUIStatus(); string html = ""; foreach (DaoStatus st in status) { html += ""; } divRecent.InnerHtml = html; } } 

webBrowser控件导航到本地文件。 如果调用了满载的showRecent() ,它将从数据库获取信息,并使用id为“recent_cont”的div-Element相应地创建按钮。