WebBrowserコントロールにWebサイトを表示する

2010年6月9日(水)
PROJECT KySS

WebBrowserコントロール利用の処理を記述する

レイアウトができたところで、処理を記述していきます。

Solution ExplorerのMainPage.xamlを展開し、MainPage.xaml.vbをダブルクリックして、コード画面を開いてください。リスト4のようにロジック・コードを記述します。

リスト4 ロジック・コード(MainPage.xaml.vb)

■名前空間のインポートとオブジェクト変数の宣言
Option Strict On
LINQ to XMLでXMLを処理するクラスの含まれる、System.Xml.Linq名前空間をインポートします。
Imports System.Xml.Linq
XElementクラス用オブジェクト変数xmldocをメンバ変数として宣言します。
  Dim xmldoc As XElement
■ページが読み込まれたときの処理
XElement.Loadメソッドで、XML文書ファイル (bookInfo.xml)を読み込みます。
XML文書ファイルから要素の子要素のコレクションを取得する、クエリ(query)を定義します。
定義したクエリ(query)を実行します。クエリコレクション内を変数resultで反復処理しながら、ListBox1コントロールに、Addメソッドで要素の値を追加していきます。
Insertメソッドを用いて、ListBox1コントロールのインデックスが0の位置(先頭)に、「選択してください。」という項目を挿入します。これで、ListBox1コントロール内に書籍名の一覧が表示されます。
  Private Sub MainPage_Loaded(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles Me.Loaded
    xmldoc = XElement.Load("bookInfo.xml")
    Dim query = From c In xmldoc.Descendants("書籍"). Select c

    For Each result In query
      ListBox1.Items.Add(result.Value)
    Next
    ListBox1.Items.Insert(0, "選択してください。")
  End Sub

■ListBoxコントロール内の項目が選択されたときの処理
IsRunningOutOfBrowserプロパティで、アプリケーションがブラウザ外で実行されているかどうかをチェックします。ブラウザ外で実行されていない場合は、メッセージ・ボックスを表示します。ブラウザ外で実行されている場合は、以下の処理を実行します。
ListBox1コントロールの選択された項目のインデックスが1か、それより大きい場合は、選択された項目のインデックスから1を減算した位置にあるの”url” 属性の値を取得します。1を減算するのは、ListBox1コントロール内のインデックスが0の位置には、「選択してください。」という項目があるからです。
取得した”url”属性値は、WebBrowser1 コントロールのNavigateメソッドに、絶対Uriで指定します。これで、ListBox1コントロールより選択された項目に対応するリンク先が、WebBrowser内に表示されます。
  Private Sub ListBox1_SelectionChanged(ByVal sender As Object, ByVal e As System.Windows.Controls.SelectionChangedEventArgs) Handles ListBox1.SelectionChanged
    If App.Current.IsRunningOutOfBrowser = False Then
      MessageBox.Show("インストールを実行してください。")
      Exit Sub
    Else
      If ListBox1.SelectedIndex >= 1 Then
        Dim myUriQuery = xmldoc.Descendants("書籍").(ListBox1.SelectedIndex - 1).@url.ToString
        WebBrowser1.Navigate(New Uri(myUriQuery, UriKind.Absolute))
      End If
    End If
  End Sub

■[OK]ボタンがクリックされたときの処理
IsRunningOutOfBrowserプロパティで、アプリケーションがブラウザ外で実行されているかどうかをチェックします。ブラウザ外で実行されていない場合は、メッセージ・ボックスを表示します。ブラウザ外で実行されている場合は、以下の処理を実行します。
NavigateToStringメソッドで、TextBox1コントロール内に記述された内容を、WebBrowserコントロール内に表示します。このNavigateToStringは、指定されたHTML内容を表示するメソッドです。
  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button1.Click
    If App.Current.IsRunningOutOfBrowser = False Then
      MessageBox.Show("インストールを実行してください。")
      Exit Sub
    Else
      WebBrowser1.NavigateToString(TextBox1.Text)
    End If
  End Sub

ブラウザ外実行で動作を確認する

作成したSilverlightアプリケーションの動作を確認してみましょう。「Debug/Start Debugging」で実行し、画面上で右クリックをすると、図8のように「このコンピューターに[設定済みのShortcut name(ショートカット名)]をインストールします」というメニューが表示されます。

図8: インストールを問うメニューが表示される(クリックで拡大)

今回は、前掲の図5のとおり、信頼されたTrustedモードに設定しているため、インストールを実行すると、図9のような「セキュリティの警告」画面が表示されます。 「その他のオプション」を展開すると、デフォルトでは「スタートメニュー」「デスクトップ」の両方にチェックが付いています。 サンプルですのでスタートメニューには登録しませんからチェックを外し、「デスクトップ」にのみチェックを付けて[OK]をクリックします。

図9:Trustedモードの場合のインストール画面

インストールが完了すると、ブラウザ外実行でSilverlightアプリケーションが起動します。デスクトップには前掲図5で設定した「Shortcut name」とアイコンで、ショートカットが作成されます(図10)。

図10: デスクトップにショートカットが作成される

インストール済みのアプリケーションを削除する場合は、ブラウザ外で実行されているアプリケーション上の、 WebBrowserコントロール以外の場所でマウスを右クリックすると「このアプリケーションを削除します」というメニューが表示されますので、ここから削除します(図11)。

図11:「このアプリケーションを削除します」から削除する(クリックで拡大)

なお、Silverlight4_Tools RC2では、「Debug」のStart Actionのデフォルトは「Dynamically generate a test page」でした。 ダウンロード用のサンプルファイルは、Silverlight4_Tools RC2で開発しているため、「Dynamically generate a test page」から 「Out-of-browser application」に変更すると、即座にブラウザ外実行では動作しません。Solution Explorer内の「SL4_WebBrowser」を選択し、 マウスの右クリックで表示されるメニューから「Set as StartUp Project」を指定したうえで実行してください。

次回は、マウス・ホイールによるスクロールや拡大・縮小と、ブラウザ外実行によるNotificationWindowへのデータ表示の2つを紹介します。

四国のSOHO。薬師寺国安(VBプログラマ)と、薬師寺聖(デザイナ、エンジニア)によるコラボレーション・ユニット。1997年6月、Dynamic HTMLとDirectAnimationの普及を目的として結成。共同開発やユニット名義での執筆活動を行う。XMLおよび.NETに関する著書や連載多数。最新刊は「Silverlight実践プログラミング」両名とも、Microsoft MVP for Development Platforms - Client App Dev (Oct 2003-Sep 2012)。http://www.PROJECTKySS.NET/

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています