2011-05-18 78 views
0

我使用的是.NET visual C#2008,在我的web浏览器中,我添加了单击事件处理程序来捕获我点击过的html标签名称。添加点击事件处理程序时,为什么会丢失webbrowser控件?

但后来我失去了对网页浏览器的控制。

当我启动应用程序时,在web浏览器中,我无法在浏览器的文本字段中输入文本。它仍然接受鼠标点击链接。

我发现很少有人在论坛中有这个问题,但没有找到解决方案。 我在做什么错?

代码

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 

namespace IERecorder 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 


     private mshtml.HTMLDocument doc = null; 



     private void Form1_Load_1(object sender, EventArgs e) 
     { 

      txtRecord.Items.Add("start..."); 
      txtRecord.Items.Add("start2..."); 
      webBrowser1.Navigate("http://www.google.com"); 
     } 


     private void webBrowser1_DocumentComplete(object sender, WebBrowserDocumentCompletedEventArgs e) 
     { 

      txtRecord.Items.Add(e.Url.ToString() + " loaded..."); 

      if (doc == null) 
      { 
       doc = (mshtml.HTMLDocument)webBrowser1.Document.DomDocument; 
       mshtml.HTMLDocumentEvents2_Event iEvent; 
       iEvent = (mshtml.HTMLDocumentEvents2_Event)doc; 
       iEvent.onclick += new mshtml.HTMLDocumentEvents2_onclickEventHandler(ClickEventHandler); 

      } 

     } 

     private bool ClickEventHandler(mshtml.IHTMLEventObj e) 
     { 
      txtRecord.Items.Add("clicked ==>" + e.srcElement.tagName); 
      txtRecord.Items.Add("clicked2 ==>" + e.srcElement.getAttribute("name", 0)); 

      txtRecord.Items.Add("clicked3 ==>" + e.srcElement.innerHTML); 

      return true; 
     } 


    } 
} 

回答

1

我没有看到你的代码的文本字段?你的意思是谷歌搜索框?

这是我能够用您提供的代码重现的屏幕截图。我能够搜索到stackoverflow并浏览到它。我会仔细检查你的事件处理程序是否仍然正确连接。

enter image description here

+0

嗯..这太奇怪了。在我而言,我只是运行像你的屏幕截图,在google.com页的.NET应用程序。在页面中的谷歌搜索文本字段中,尝试通过鼠标单击以获得焦点来键入文本,但它不重点。看起来webbrowser本身被禁用或者其他东西。 – 2011-05-18 08:49:03

相关问题