2015-04-04 25 views
0

好的。所以,我正在製作自己的互聯網瀏覽器,並且擁有標籤。但是,我試圖讓它成爲一個實時URL更新程序,而如果你點擊任何鏈接,它將顯示在URL的文本框中。 它不會工作。 這是選項卡按鈕。檢索C#WebBrowser控件中單擊的鏈接的URL

private void button8_Click(object sender, EventArgs e) 
    { 
     WebBrowser Browser = new WebBrowser(); 
     tabControl1.TabPages.Add("New Page"); 
     tabControl1.SelectTab(tabControl1.TabPages.Count - 1); 
     Browser.Name = "Web Browser"; 
     Browser.Dock = DockStyle.Fill; 
     tabControl1.SelectedTab.Controls.Add(Browser); 
     ((WebBrowser)(tabControl1.SelectedTab.Controls[0])).GoHome(); 

而這裏是我的文本框沒有得到正確的網址。

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
    { 
     button1.Enabled = true; 
     textBox1.Enabled = true; 
     //textBox1.Text = Browser.Url.ToString(); 
     ((WebBrowser) (this.tabControl1.SelectedTab.Controls[0])).Url.ToString(); 
    } 

回答

0

爲了這個工作,你需要得到你剛剛加載網頁的所有鏈接元素和分配自定義函數來HtmlElement.Click事件的元素。

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
{ 
    button1.Enabled = true; 
    textBox1.Enabled = true; 
    var linkElements = Browser.Document.GetElementsByTagName("a"); 
    foreach(HtmlElement link in linkElements) 
    { 
     link.Click += (s, args) => 
     { 
      // a link is being clicked 
      // get the url the link is pointing to using the href attribute of the element 
      textBox1.Text = link.GetAttribute("href"); 
     } 
    } 
} 
+0

對象不包含GetAttribute的定義,並單擊。另外,局部變量'sender'不能在這個範圍內聲明,因爲它會變成不同的含義。 – 2015-04-04 17:23:30

+0

好吧,我已更正了代碼。 – 0x8BADF00D 2015-04-04 17:36:08

+0

謝謝。你只是錯過了一個額外的分號。這是textBox1.Text = link.GetAttribute(「href」);之後的第一個「}」。所以它應該看起來像。 'textBox1.Text = link.GetAttribute(「href」); };' 此外,它似乎沒有工作。 我設置它的方式是沒有webBrowser1,所以它不能運行這行代碼。當我按新標籤它使webBrowser。我該如何解決這個問題? – 2015-04-04 18:05:46

相關問題