リストビューコントロールをフォーム
に貼り付ける
1 ツールボックス(ツールボックスが開いていない場合は、表示メニューから「ツールボックス」を選択してください。)から、
「ListView」をドラッ
グし、フォーム上にマウスカーソルを持って行く。
2 フォーム上で、リストビューを表示する大きさの指定は、マウスのドラッグにより行います。
3 デフォルトで、リストビューのネーミングは、listView1、listView2、・・・・の順となりま
す。
|
リスト
ビューコントロールの名前を変える
1 フォームイメージが表示されるデザインビューの状態にし、画面右下のプロパティウィンドウのName欄の内容を変更し
ます。プロパティウィ
ンドウ
が表示されない場合は、表示メニューから「プロパティウィンドウ」を選択してください。
※ リストビューに限らず、ツールボックスから貼り付けたコントロールの名称
を、プログラム内から変更することはできません。これは、プロ
グラムがこ
のNameプロパテイでコントロールを区別しているためです。
|
リストビューの大きさを変更する
1 ネーミングと同様に、プロパティウィンドウのSize(大きさ)欄を変更してください。カンマの左側がリストビューの横幅、右側が縦幅となりま
す。
2 Sizeはプログラムの中から変更することができます。例えば、
listView1.Size=New System.Drawing.Size(300, 200);
という具合です。
他のコーディング方法としては、
listView1.Width=300;
listView1.Height=200;
とする方法があります。
|
リストビューの位置を変更する
1 プロパティウィンドウのLocation(位置)欄を変更してください。カンマの左側が画面左端からの位置、右側が画
面上端からの
位置となり
ます。
2 Sizeはプログラムの中から変更することができます。例えば、
listView1.Location=New
System.Drawing.Point(20, 15);
という具合です。
他のコーディング方法としては、
listView1.Left=20;
listView1.Top=15;
とする方法があります。
|
リスト
ビューを初期化する
リストビューは最初にフォームに貼り付けた段階で、初期化されていますが、明示的に初期化することもできます。
リストビューのノードをすべて消去するには、
listView1.Clear();
リストビューを書き換えた後の状態を画面表示に反映するには、
listView1.Reflesh();
を実行します。
|
リスト
ビューの表示を変える
リストビューの表示方法には4つの種類があります。この多様な表示方法のあることがリストビューの大きな特徴となっています。
表示方法の切替は、リストビューのViewプロパテイによって行います。
@ LargeIconビュー
次のような表示になります。ここで表示されるアイコンは、LargeImageListプ
ロパテイで、関連させるイメージリストを指定しま
す。
プログラムからは、listView1.View=LargeIcon; とコー
ディングします。
A SmallIconビュー
次のような表示になります。ここで表示されるアイコンは、SmallImageListプ
ロパテイで、関連させるイメージリストを指定しま
す。
プログラムからは、listView1.View=SmallIcon; とコー
ディングします。
B Detailsビュー
次のような表形式の表示になります。各行(アイテム)の左端のセルには、スモールアイコンを表示させることができます。
プログラムからは、listView1.View=Details; とコーディ
ングします。
アイコンは、SmallImageListプ
ロパテイで、関連させるイメージリストを指定します。表の
境界線を表示するには、GridLineプロパテイを
trueにします。
C Listビュー
次のような表示になります。ここで表示されるアイコンは、SmallImageListプ
ロパテイで、関連させるイメージリストを指定しま
す。
プログラムからは、listView1.View=List; とコーディングし
ます。
|
リスト
ビューにアイテムを付け加える
コントロールを貼り付けただけでは、リストビューは何の動作もしません。リストビューを構成するのは、アイテム(項目)です。エクセル
などの
表計算ソフトで言えば、各行がアイテム、各行を構成する列はサブアイテムを表します。
それでは、リストビューに「バラ」、「ヒマワリ」という名前のアイテムを付け加えてみましょう。
listView1.Items.Add("バラ");
listView1.Items.Add("ヒマワリ");
これを実行すると、リストビューに、2つの項目が表示されます。
リストビューコントロールの場合、表示方法によって、表示内容は大きく異なりますが、Iconビューの場合は、アイコン画像とアイテム名のみ
が表示されます。
|
リストビューをDetailsビューで表示する
もっとも、詳細な表示は、その名のとおりDetails
ビューの際に実現します。
listView1.View=Details;
Detailsの要素は、サブアイテムによって、アイテムに付加していきます。
ここでは、Detailsビューを見ていきましょう。
Detailsビューには、最上端にタイトル行があります。
まず、タイトルをつけましょう。
プロパテイウィンドウのColumnsプ
ロパテイの(コレクション)を開きます。すると、ColumnHeaderコレク
ションエデイタが開きま
す。
タイトルを付けるには、「追加」ボタンを押し、エデイタの右側のプロパテイ欄を編集します。
タイトル名はText, タイトルの水平位置はTextAlign,タイトル幅はWidthで設定します。
ここでは、「花」、「開花時期」、「増殖方法」というタイトル名を付けましょ
う。
このリストビューに、アイテムを追加していき
ましょう。
ListViewItem
item1=listView1.Items.Add("バラ");
item1.SubItems.Add("春〜夏");
item1.SubItems.Add("挿し木、接木");
ListViewItem
item2=listView1.Items.Add("ヒマワリ");
item2.SubItems.Add("夏");
item2.SubItems.Add("種子");
|
リスト
ビューのアイテム数をカウントする
プログラムから次のように取得します。
int i =
listView1.Items.Count;
|
リスト
ビューのアイテム名を変更する
リストビューのアイテム名は、Itemsプロパテイの
(コレクション)から設定することができます。
プログラムから、アイテム名を設定するには、
listView1.Items[0].Text = "ミニバラ";
という風に行います。ここで、[
]内の数字は、アイテムインデックスで、アイテムの追加順に0、1、2、・・・と番号が付きます。
また、サブアイテム名の設定は、
listView1.Items[0].SubItems[2].Text="挿し木";
とします。ここでSubItemsの[ ]内
は、サブアイテムインデックスで、アイテムのColumn順に0、1、2、・・・と番号が付きます。
「庭園」ノードを、「ガーデン」ノードに変更してみま
しょう。
ノード名は、各ノードのTextプロ
パティで設定・変更します。
listView1.Nodes("庭園").
Text="ガーデン";
これだけです。
また、プログラムの実行画面上からも簡単にノード名を変更できます。
名前を変えたいノード上でマウスクリックをします。すると、ノードのテキスト部分が反転しますので、そのまま、反転したテキストボックス
内に変更後の名前を入力してください。
※ノード名の変更は、リストビューのLabelEditプロパティが真
のときのみ有効です。プログラムからは、
listView1.LabelEdit=true;
としてください。
|
リストビューにチェックボックスをつ
ける
チェックボックスを付けるには、リストビューのプロパテイウィンドウで、CheckBoxesプロ
パテイを真にしてください。プログラムから
は、
listView1.CheckBoxes=true; と
します。
|
リスト
ビューにアイコンをつける
リストビューには、アイコンをつけることができ、
これがリストボックスコントロールとの違いとなっています。
アイコンの大きさは自由に設定できますが、個々のノードに固有の画像データを読み込むというメソッドはリストビューにはありません。
このため、別に、イメージリストを作って、イメー
ジリストコントロールとリストビューコントロールとを関連付ける方法をとります。
では、これをステップを追って見てみましょう。
@ イメージリストを作る
イメージリストを使って、コントロールに画像を付加する手法は、他のコントロールでも共通です。
まず、イメージリストコントロール(ImageList(をツールボックスからフォーム上にドラッグします。
すると、フォームイメージの下に、imageList1コントロールが表示されます。デフォルトでのネーミングの規則は、他のコントロー
ルと
同様に、imageList1 , imageList2 , ・・・ という並びになります。
さて、イメージリストは、特定の大きさの画像ファイルが複数ある場合に多く用いられます。フォーム上のタスクバーアイコンやボタン
アイコンなど、特定の大きさの画像が多数必要な用途に向いています。
画像のサイズは、イメージリストのImageSizeプロパテイで設定します。カンマの左側が画像横幅、右側が画像縦幅となります。
アイコンの場合、通常は、画像横幅=画像縦幅として問題ありません。
※ ImageSizeプロパテイは、プログラム上から取得す
ることはできますが、設定することはできません。
例えば、
int w,h;
w=imageList1.ImageSize.Width ; h=imageList1.ImageSize.Height;
は可能ですが、
int
w,h;
w=25;h=25;
imageList1.ImageSize.Width=w;=imageList1.ImageSize.Height;=h;
はエラーとなります。
次にイメージリストに画像ファイルを読み込みます。
プロパテイウィンドウのImagesプロパテイ右側には(コレクション)という表示がありますが、この表示の意味は、このプロパテイが複数
の要素を持つことを示しています。
プロパテイが(コレクション)である場合、(コレクション)の右側にある「・・・」をクリックすると、Imageコレクションエディタダイアログが
開きます。
このダイアログ内で、追加ボタンを押すと、「ファイルを開く」ダイアログボックスが開きます。
ここで、イメージリストに読み込む画像ファイルを指定すると、
Imageコレクションに新しいメンバーとして画像が追加され、画像の縮
小イメージがメンバリストに追加されます。
A イメージリストコントロールとリストビューコント
ロールとを関連付ける
では、次にリストビューとこのイメージリストを関連付けましょう。
◇ ビューモードがLargeIconの場合
リスト
ビューのプロパテイウィンドウで、LargeImageListプ
ロパテイで、関連させるイメージリストを指定しま
す。
例えば、"imageList1"
を設定します。これで関連付けは終わりです。
他のコントロール(例えばリストビュー)と、イメージリストを共有することも可能です。
◇ ビューモードがSmallIcon又はDetailsの場合
リスト
ビューのプロパテイウィンドウで、SmallImageListプ
ロパテイで、関連させるイメージリストを指定しま
す。
B アイテムにアイコンを貼り付ける
アイテムにアイコンを付属けると、ビジュアル的に美しいリストビューに仕上がります。
もう一度、イメージリストのコレクションを開いてみてください。すると、メンバリストの左端に、ボタン状の番号0、1、2、・・・が表示さ
れ
ています。これを「イメージインデックス」と言います。リストビューのアイテムアイコンを設定するには、このイメージインデックスを指定し
ます。
例えば、次のとお
り。
listView1.Item[0].
ImageIndex=3;
listView1.Item[0].SelectedImageIndex =
3;
1行目は、通常表示時のイメージ指定、2行目はノードがセレクト状態の場合のイメージ指定です。例えば、セレクト状態の場合に
アイコンの表示を変化させる場合などに用います。
|
リスト
ビューを並べ替える
リストビューには、Sortプ
ロパテイがあるので、これは
簡単に行うことができます。このプロパテイを"true"にしてください。
|
リスト
ビューの背景色を変える
リストビューには、他のコントロール同様にBackColorプ
ロパテイがあります。数字で背景色を指定するときは、R(赤)、G(緑)、B(青)の順
に、0〜255の範囲で値を指定してください。例えば、赤は「255,0,0」、 白は「255,255,255」という具合です。
BackColorプ
ロパテイから開けるピクチャーボックスから、色をクリック指定することもできます。
プログラム上から色指定する場合は、
listView1.BackColor=Color.Red;
又は
listView1.BackColor=Color.FromArgb(255, 0,0);
という風に指定します。
|
リスト
ビューの描画色を変える
リストビューの枝の描画線、ノード名テキストの描画色は、ForeColorプロパ
テイで指定します。
プログラム上から色指定する場合は背景色の
設定と同様
に、
listView1.ForeColor=Color.Black;
等と指定します。
|
リスト
ビューのアイテムパスを取得する
リストビューの枝のつながりについて、特定のノードを指定してパスを取得することができます。例えば、エクスプローラ
のように、ド
ライブ上
のディレクトリ構造を、そのままリストビューとして表すような場合に利用価値があります。
ノードパスの取得は、プログラム上から次のようにコーデイングします。
string s;
listView1.SelectedItem= listView1.Items[0].SubItem[1];
s=listView1.SelectedItem.FullPath;
すると、例えば、s="バラ\春〜夏"と、文字変数sでノードパスが取得できます。
このうち、パスセパレータは、リストビューのPathSeparatorプロパテイで設定しますが、デフォルトでは、「\」記号となっています。
|
マウスク
リックされたアイテムを選択状態にする(Pending)
マウスイベントには、マウスダウン、マウスアップなど関連イベントが多数ありますが、マウスクリックされたノードを取
得するには、
マウスダ
ウンイベントを使うと便利です。
private void
listView1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs
e)
{
string s;
ListViewItem item = listView1.GetItemAt(e.X, e.Y);
if (item!=null)
{
s=item.Text;
}
}
|
|
|