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