VB.NETで簡単なWebブラウザを作る
(その2)
[移動]ボタンを押したときに、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のページを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
WebBrowserコントロールに表示されているWebページのタイトルを取得します。
Public ReadOnly Property DocumentTitle As String
WebBrowserコントロールのナビゲーション履歴に前のページがあるかどうかを調べます。
Public ReadOnly Property CanGoBack As Boolean
WebBrowserコントロールのナビゲーション履歴に次のページがあるかどうかを調べます。
Public ReadOnly Property CanGoForward As Boolean