2011-01-29 82 views
4

在WinForms应用程序中创建简单的Web浏览器。在我的应用程序有以下组成部分:在文本框中显示URL地址

  • 一个文本框
  • 一个WebBrowser

要求规格:

  • 当点击来自web浏览器的网页链接之一,URL地址应显示在文本框中

目标:

  • 在地址栏中显示URL地址。

问题:

  • 不知道我应该使用哪一个事件?我曾尝试在组件webbrowser中使用事件DocumentCompletedVisibleChanged,但它不起作用。
  • 我应该如何显示URL地址从组件WebBrowser到文本框?
+0

见[dotBrowser项目](http://sourceforge.net/projects/dotbrowser/develop)如实施例 – abatishchev 2011-01-29 12:18:25

回答

4
this.Browser.DocumentTitleChanged += Browser_DocumentTitleChanged; 
private void Browser_DocumentTitleChanged(object sender, EventArgs e) 
{ 
    Uri url = ((WebBrowser)sender).Document.Url; 
    txtUrl.Text = url.ToString(); 
} 

this.Browser.Navigating += Browser_Navigating; 
private void Browser_Navigating(object sender, WebBrowserNavigatingEventArgs e) 
{ 
    Uri url = e.Url; 
    txtUrl.Text = url.ToString(); 
} 
+0

如果文档不包含标题,或者以前的文档和新文档的标题相同,该怎么办? – user 2011-01-29 12:26:47

1

您应该使用Navigated事件。当事件发生时,您可以将您的文本框的Text属性设置为WebBrowserUrl属性的值,就像这样:

addressBarTextBox.Text = webBrowser.Url.AbsoluteUri; 
+1

我认为`Navigating`事件,因为在这种情况下地址的文本框是更好将不会“挂起”,直到导航 – abatishchev 2011-01-29 12:25:54

+0

@abatishchev,好点。 – 2011-01-29 12:27:56

1

我建议使用WebBrowser.Navigated事件。只要文档开始加载就会触发它。

实施例:

private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e) 
{ 
    textBox1.Text = webBrowser.Url.AbsoluteUri; 
}