2012年8月10日金曜日

C# TreeViewコントロールの項目にアイコンを追加する

今回は、TreeViewコントロールの項目にアイコンを追加する方法を勉強。



利用するコントロールは
・TreeView
・ImageList
の2つ



まず、ツリービューで表示したいアイコンをImageListコントロールのインスタンスに追加します。
imageList1をクリックし、プロパティウィンドウのImagesプロパティをクリックします。すると[...]ボタンが表示されるので、これをクリック。

イメージコレクションエディターが表示されるので、[追加]ボタンをクリックし、使用するアイコンを選択します。


指定したアイコンが表示されます。この作業を利用したいアイコンの数くりかえします。



利用するアイコンをすべて追加したら、コードを編集します。

■コード
using System;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            //リストビューに表示するアイコンのリストを設定する
            treeView1.ImageList = this.imageList1;

            //リストビュー全体で利用するアイコンの設定
            treeView1.ImageIndex = 0;
            treeView1.SelectedImageIndex = 0;

            TreeNode n1 = new TreeNode("項目1");
            TreeNode n2 = new TreeNode("項目2");

            //ノードごとに個別のアイコンを設定する
            n1.Nodes.Add(new TreeNode("項目1-1", 1, 1));
            n1.Nodes.Add(new TreeNode("項目1-2", 1, 1));

            treeView1.Nodes.Add(n1);
            treeView1.Nodes.Add(n2);
        }
    }
}

treeView1.ImageList = this.imageList1;の部分が
imageList1に追加したアイコンをリストビューに表示するアイコンとして設定している部分。
。この設定でimageList1に追加したアイコンがツリービューでも利用できるようになる。

treeView1.ImageIndex = 0;
treeView1.SelectedImageIndex = 0;の部分がリストビューの全項目で表示するアイコンを指定する部分。ImageIndexが通常時のアイコンの指定で、SelectedImageIndexが選択中の項目で表示するアイコンの指定。インデックスで指定する数値は、アイコンの登録時に表示されていた数値です。

なお、項目ごとに違うアイコンを表示させたい場合は、

「new TreeNode("項目1-1", 1, 1)」のようにTreeNodeクラスのインスタンス生成時の第二引数と第三引数で指定する。