C#で簡単なWebブラウザを作る
(その2)

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

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

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


/****************************************************************************/
/*!
 *  @brief  指定されたURLのページを表示する.
 *
 *  @param  [in]    sender  イベントの送信元のオブジェクト.
 *  @param  [in]    e       イベント情報.
 *
 *  @retval なし.
 */
private void MoveButton_Click(object sender, EventArgs e)
{
    //! 指定されたURLが空白の場合、処理しない.
    if( UrlList.Text == null || UrlList.Text.Length == 0 ){
        return;
    }

    //! 指定されたURLのWebページを読み込む.
    try {
        webBrowser1.Navigate( new Uri(UrlList.Text) );
    }
    catch( System.UriFormatException ){
        return;
    }
}
	

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

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


    public void Navigate( Uri url )
	

引数説明
Uri

表示するページのURL。

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


    public Uri Url { get; set; }
	

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

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

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

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


/****************************************************************************/
/*!
 *  @brief  Webページの読込みを開始したときのイベント処理.
 *
 *  @param  [in]    sender  イベントの送信元のオブジェクト.
 *  @param  [in]    e       イベント情報.
 *
 *  @retval なし.
 */
private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
{
    //! ナビゲーションボタンを無効にする.
    SetNaviButton( false );
}
	


/****************************************************************************/
/*!
 *  @brief  Webページの読込みを開始したときのイベント処理.
 *
 *  @param  [in]    sender  イベントの送信元のオブジェクト.
 *  @param  [in]    e       イベント情報.
 *
 *  @retval なし.
 */
private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e)
{
    //! ナビゲーションボタンを有効にする.
    SetNaviButton( true );

    //! 表示したWebページのURLを表示する.
    UrlList.Text = webBrowser1.Url.ToString();

    /*!
     * URLリストに表示したWebページのURLを追加する.
     * (但し、既にURLリストに追加されているURLの場合は登録しない)
     */
    int i;
    for( i = 0; i < UrlList.Items.Count; i++ ){
        if( UrlList.Items[i].ToString() == webBrowser1.Url.ToString() ){
            break;
        }
    }
    if( i >= UrlList.Items.Count ){
        UrlList.Items.Add( webBrowser1.Url.ToString() );
    }

    //! Webページのタイトルをウインドウのキャプションに表示する.
    if( webBrowser1.DocumentTitle == null || webBrowser1.DocumentTitle.Length == 0 ){
        this.Text = webBrowser1.Url.AbsoluteUri;
    }else{
        this.Text = webBrowser1.DocumentTitle;
    }
}
	


/****************************************************************************/
/*!
 *  @brief  ナビゲーション・ボタンの有効/無効を設定する.
 *
 *  @param  [in]    ena     True = ナビボタンを有効 / False = ナビボタンを無効.
 *
 *  @retval なし.
 */
private void SetNaviButton( bool ena )
{
    if( ena == true ){
        //! ナビゲーション履歴に前のページがある場合に、[戻る]ボタンを有効にする.
        if( webBrowser1.CanGoBack == true ){
            BackButton.Enabled = true;
        }else{
            BackButton.Enabled = false;
        }

        //! ナビゲーション履歴に次のページがある場合に、[進む]ボタンを有効にする.
        if( webBrowser1.CanGoForward == true ){
            FwdButton.Enabled = true;
        }else{
            FwdButton.Enabled = false;
        }

        //! [更新]/[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;
    }
}
	

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

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


    public event WebBrowserNavigatedEventHandler Navigated
	

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

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


    public event WebBrowserNavigatingEventHandler Navigating
	

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

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


    public string DocumentTitle { get; }
	

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

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


    public bool CanGoBack { get; }
	

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

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


    public bool CanGoForward { get; }
	



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