説明文と画像の表示処理
このプログラムでは、例えば、TreeViewコントロールのノードにある「雪割草」という山野草の品種名をクリックすると、RichTextBoxコントロールに説明文を、PictureBoxコントロールに画像を表示します。
サンプルプログラムなので、そんなに凝ったものではありませんが、説明文はrtf形式のテキストで、画像はJPEG形式のファイルでそれぞれ作成され、プログラムの実行ファイル(exeファイル)があるフォルダ内の「App_Data」というサブフォルダに格納されます。
![rtf形式のファイルとJPEG画像](http://cz-cdn.shoeisha.jp/static/images/article/5106/Image13.jpg)
![実行ファイル(exeファイル)のサブフォルダ「App_Data」に格納](http://cz-cdn.shoeisha.jp/static/images/article/5106/Image14.jpg)
データの読み込み処理
データと写真を読み込む処理は、TreeViewコントロールのノードがクリックされたタイミングで行います。
ノードをクリックすると、TreeViewコントロールには「AfterSelect」というイベントが発生します。このイベントハンドラの引数「e」から、クリックされたノードの文字を読み取り、どのノードがクリックされたのかを把握します。
- まず、Private変数「my_pass」を宣言し、フォームのLoadイベントハンドラでApplicationオブジェクトのStartupPathプロパティを参照して、実行プログラムのあるフォルダのディレクトリを把握します。
- 次に、TreeViewコントロールのAfterSelectイベントハンドラで、イベントが発生したNodeオブジェクトのTextプロパティを読み取り、処理を分岐します。各分岐処理では、フォルダ「App_Data」からrtfファイルとJPEGファイルを読み込んで、それぞれRichTextBoxとPictureBoxコントロールで表示します。
Public Class Form1 Private my_pass As String Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load my_pass = Application.StartupPath End Sub Private Sub TreeView1_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterSelect Select Case e.Node.Text Case "紅おけさ" Me.PictureBox1.Image = Image.FromFile(my_pass & "\App_Data\beni_okesa.jpg") Me.RichTextBox1.LoadFile(my_pass & "\App_Data\紅おけさ.rtf") Case "川蝉" Me.PictureBox1.Image = Image.FromFile(my_pass & "\App_Data\kawasemi.jpg") Me.RichTextBox1.LoadFile(my_pass & "\App_Data\川蝉.rtf") Case "麗人" Me.PictureBox1.Image = Image.FromFile(my_pass & "\App_Data\reijin.jpg") Me.RichTextBox1.LoadFile(my_pass & "\App_Data\麗人.rtf") Case "深山" Me.PictureBox1.Image = Image.FromFile(my_pass & "\App_Data\miyama.jpg") Me.RichTextBox1.LoadFile(my_pass & "\App_Data\深山.rtf") End Select End Sub
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace my_sizer_cs { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private string my_pass; private void Form1_Load(object sender, EventArgs e) { my_pass = Application.StartupPath; } private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) { switch (e.Node.Text) { case "紅おけさ": pictureBox1.Image = Image.FromFile(my_pass + "/App_Data/beni_okesa.jpg"); richTextBox1.LoadFile(my_pass + "/App_Data/紅おけさ.rtf"); break; case "川蝉": pictureBox1.Image = Image.FromFile(my_pass + "/App_Data/kawasemi.jpg"); richTextBox1.LoadFile(my_pass + "/App_Data/川蝉.rtf"); break; case "麗人": pictureBox1.Image = Image.FromFile(my_pass + "/App_Data/reijin.jpg"); richTextBox1.LoadFile(my_pass + "/App_Data/麗人.rtf"); break; case "深山": pictureBox1.Image = Image.FromFile(my_pass + "/App_Data/miyama.jpg"); richTextBox1.LoadFile(my_pass + "/App_Data/深山.rtf"); break; } }