ブログビューワーの作り方 ~WPF編~
マイクロソフトの田中達彦です。
Windows API Code Pack、フォトギャラリーのプラグインと、連載が終わった時にブログビューワーというものを提供しています。
このブログビューワーの作り方はとても簡単なので、紹介します。
今回は、WPFを使用したブログビューワーの作り方を紹介します。
なお、開発ツールはVisual Studio 2010、開発言語はC#を使用します。
手順1 : 新規プロジェクトの作成
Visual Studio 2010を起動し、メニューの[ファイル]-[新規作成]-[プロジェクト]を選択します。.NET Frameworkのバージョンを4にして、WPFアプリケーションを選択し、必要に応じてプロジェクトの名前やフォルダーを変更し、[OK]ボタンを押します。
手順2 : タブコントロールの貼り付け
ツールボックスの中にあるTabControlをフォーム上にドラッグアンドドロップします。
フォーム上に貼り付けたタブコントロールは、下図のようにフォームの内側いっぱいに広げてください。
そして、タブコントロールを選択した状態で、以下のようにプロパティを変更します。
タブコントロールを選択した状態だと、赤く囲ってある部分の表示になっています。それ以外のものが表示されている場合は、タブコントロールが選択されていないので、確認してください。
オレンジで囲ってある以下のプロパティを変更します。変更するには、オレンジ色で囲った部分の左端にある◆の印をクリックし、[値のリセット]を選択します。選択後は図にあるような、□の右下を少しめくったような印になります。
Width : Auto
Height : Auto
HorizontalAlignment : Stretch
VerticalAlignment : Stretch
手順3 : ウィンドウを表示させるときのイベントハンドラの実装
フォームの何も貼り付けていない部分 (MainWindowと書かれているところあたり) をダブルクリックし、Windows_Loadedというイベントハンドラを作成します。
その中には、以下の青字の部分のコードをコピペします。
private void Window_Loaded(object sender, RoutedEventArgs e)
{
tabControl1.Items.Clear();
string url = "";
string tabname = "";
foreach (string str in URLlist)
{
if (url == "")
{
url = str;
}
else if (tabname == "")
{
TabItem newpage = new TabItem();
tabname = str;
newpage.Header = tabname;
WebBrowser viewer = new WebBrowser();
viewer.Navigate(url);
newpage.Content = viewer;
tabControl1.Items.Add(newpage);
url = "";
tabname = "";
}
}
}
手順 4 : データの用意
MainWindowクラスの中に、以下のフィールドを用意します。
private string[] URLlist =
{
"https://blogs.msdn.com/b/ttanaka/archive/2010/10/26/amp-plug-in-1.aspx","1",
"https://blogs.msdn.com/b/ttanaka/archive/2010/10/27/amp-plug-in-2.aspx","2",
"https://blogs.msdn.com/b/ttanaka/archive/2010/10/28/amp-plug-in-3.aspx","3",
"https://blogs.msdn.com/b/ttanaka/","トップページ"
};
フィールドに入れるデータとしては、URLとタブに表示させる名前を交互に用意します。
あとはビルドして実行するだけです。
手順4のURLのデータの部分を見たいURLに変えれば、オリジナルのビューワーの完成です。
注意する点としては、用意したURLの数だけ一気にページを読み込みに行きますので、通信速度が遅い環境だとちょっと厳しいことと、WebBrowserコントロールが結構メモリを消費するため、用意したURLが多いとかなりメモリを食ってしますソフトになってしまう点があります。
とはいえ、よく見るWebサイトがあるときは、結構重宝します。
Windowsフォーム編も、後日記事を書きます。
マイクロソフト
田中達彦