2011-01-29 14 views
4

WinFormsアプリケーションで簡単なWebブラウザを作成する。私のアプリケーションでは、私は、次のコンポーネントがあります。テキストボックスにURLアドレスを表示

  • のTextBoxを
  • Webブラウザー

要件仕様:

  • Webブラウザーからのウェブリンクのいずれかをクリックすると、URLアドレスがすべきテキストボックスに表示されます

目標:

  • アドレスフィールドにURLアドレスを表示します。

問題:

  • 私が使用すべきイベントか分からないのですか?コンポーネントウェブブラウザでイベントDocumentCompletedVisibleChangedを使用しようとしましたが、動作しませんでした。
  • コンポーネントWebBrowserからテキストボックスにURLアドレスを表示するにはどうすればよいですか?
+0

参照[dotBrowserプロジェクト](http://sourceforge.net/projects/dotbrowser/develop)私は 'Navigating'イベントがあるため、この場合のアドレステキストボックスに優れていると思います例 – abatishchev

答えて

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

+1

@Nate:この場合、 'DocumentTitleChanged'が発生しないことを意味しますか?私は確信しています、それはそうです。 – abatishchev

1

Navigatedイベントを使用する必要があります。

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

としてナビゲーションが行われるまで「ハング」しない – abatishchev

+0

@abatishchev、良い点。 –

1

私はWebBrowser.Navigatedを使用してお勧めします:イベントが発生した場合、あなたはこのように、WebBrowserUrlプロパティの値にあなたのテキストボックスのTextプロパティを設定することができますイベント。ドキュメントが読み込まれるとすぐにトリガーされます。

例:

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

おっと、私はwebBrowser.Urlを考えていました。 – user

関連する問題