VB.NETで簡単なWebブラウザを作る
(その2)

指定されたURLのページを表示する

[移動]ボタンを押したときに、URLテキストボックスで指定されたURLのページを表示します。

サンプルコードを以下に示します。


'****************************************************************************'
'*
'*  @brief  指定されたURLのページを表示する.
'*
'*  @param  [in]    sender  イベントの送信元のオブジェクト.
'*  @param  [in]    e       イベント情報.
'*
'*  @retval なし.
'*
Private Sub MoveButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MoveButton.Click

    '指定されたURLが空白の場合、処理しない.
    If String.IsNullOrEmpty( UrlList.Text ) Then
        Return
    End If

    '指定されたURLのWebページを読み込む.
    Try
        WebBrowser1.Navigate( New Uri(UrlList.Text) )
    Catch ex As System.UriFormatException
        Return
    End Try

End Sub
	

指定されたURLのページを表示する

指定されたURLのページをWebBrowserクラスのNavigate()メソッドを使用して表示します。


    Public Sub Navigate( url As Uri )
	

引数説明
Uri

表示するページのURL。

WebBrowserクラスのプロパティUrlに表示するページのURLをセットしてもNavigate()メソッドと同様の動作を行います。


    Public Property Url As Uri
	

WebBrowserコントロールに表示するページが変更される場合、変更の開始と終了でそれぞれイベントが通知されます。

サンプルコードでは、ページ変更の終了イベントで、ナビゲーション履歴を調べて[戻る]/[進む]ボタンの有効/無効を設定しています。

また、表示するWebページのタイトルを取得して、ウインドウのキャプションを変更しています。

サンプルコードを以下に示します。


'****************************************************************************'
'*
'*  @brief  Webページの読込みを開始したときのイベント処理.
'*
'*  @param  [in]    sender  イベントの送信元のオブジェクト.
'*  @param  [in]    e       イベント情報.
'*
'*  @retval なし.
'*
Private Sub WebBrowser1_Navigating(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserNavigatingEventArgs) Handles WebBrowser1.Navigating

    'ナビゲーションボタンを無効にする.
    SetNaviButton( False )

End Sub
	


'****************************************************************************'
'*
'*  @brief  Webページの表示が終了したときのイベント処理.
'*
'*  @param  [in]    sender  イベントの送信元のオブジェクト.
'*  @param  [in]    e       イベント情報.
'*
'*  @retval なし.
'*
Private Sub WebBrowser1_Navigated(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserNavigatedEventArgs) Handles WebBrowser1.Navigated

    'ナビゲーションボタンを有効にする.
    SetNaviButton( True )

    '表示したWebページのURLを表示する.
    UrlList.Text = WebBrowser1.Url.ToString()

    'URLリストに表示したWebページのURLを追加する.
    '(但し、既にURLリストに追加されているURLの場合は登録しない)
    Dim i As Integer
    For i = 0 To UrlList.Items.Count - 1
        If UrlList.Items.Item(i).ToString() = WebBrowser1.Url.ToString() Then
            Exit For
        End If
    Next i

    If i >= UrlList.Items.Count Then
        UrlList.Items.Add(WebBrowser1.Url.ToString())
    End If

    'Webページのタイトルをウインドウのキャプションに表示する.
    If String.IsNullOrEmpty(WebBrowser1.DocumentTitle()) Then
        Me.Text = WebBrowser1.Url.AbsoluteUri()
    Else
        Me.Text = WebBrowser1.DocumentTitle()
    End If

End Sub
	


'****************************************************************************'
'*
'*  @brief  ナビゲーション・ボタンの有効/無効を設定する.
'*
'*  @param  [in]    ena     True = ナビボタンを有効 / False = ナビボタンを無効.
'*
'*  @retval なし.
'*
Private Sub SetNaviButton( ByVal ena As Boolean )

    If ena = True Then
        'ナビゲーション履歴に前のページがある場合に、[戻る]ボタンを有効にする.
        If WebBrowser1.CanGoBack = True Then
            BackButton.Enabled = True
        Else
            BackButton.Enabled = False
        End If

        'ナビゲーション履歴に次のページがある場合に、[進む]ボタンを有効にする.
        If WebBrowser1.CanGoForward = True Then
            FwdButton.Enabled = True
        Else
            FwdButton.Enabled = False
        End If

        '[更新]/[Home]/[移動]ボタンを許可する.
        RefreshButton.Enabled = True
        HomeButton.Enabled    = True
        MoveButton.Enabled    = True

        '[中止]ボタンを禁止にする.
        StopButton.Enabled = False
    Else
        '[中止]ボタン以外を禁止にする.
        BackButton.Enabled    = False
        FwdButton.Enabled     = False
        RefreshButton.Enabled = False
        HomeButton.Enabled    = False
        MoveButton.Enabled    = False
        StopButton.Enabled    = True
    End If

End Sub
	

ページの変更が開始されるときのイベント

指定されたURLのページをWebBrowserクラスのNavigate()メソッドを使用して表示します。


    Public Event Navigated As WebBrowserNavigatedEventHandler
	

ページの変更が終了するときのイベント

ページの読込みが終了するとWebBrowserクラスのNavigating()イベントが通知されます。


    Public Event Navigating As WebBrowserNavigatingEventHandler
	

Webページのタイトルを取得する

WebBrowserコントロールに表示されているWebページのタイトルを取得します。


    Public ReadOnly Property DocumentTitle As String
	

ナビゲーション履歴に前のページがあるかどうかを調べる

WebBrowserコントロールのナビゲーション履歴に前のページがあるかどうかを調べます。


    Public ReadOnly Property CanGoBack As Boolean
	

ナビゲーション履歴に次のページがあるかどうかを調べる

WebBrowserコントロールのナビゲーション履歴に次のページがあるかどうかを調べます。


    Public ReadOnly Property CanGoForward As Boolean
	



Windowsは米国Microsoft Corporationの登録商標です。
Internet Explorerは米国Microsoft Corporationの登録商標です。