xpCommonControls の XPListView
xpCommonControls には ListControls に2つのコントロールがあって、そのうちの XPListView の使い方。
http://www.steepvalley.net/dev/projects/xpcc/xpcc_ctrls.aspx
通常のListViewにXPで加わったタイル表示とグループ分け表示を追加したもの。動作環境はXPのみ。comctl32.dllのVer6.0依存。Lunaにしてないとどうなるんだろ。
タイル表示をいろいろ試してみました。デザイン画面で SteepValley.Windows.Forms.XPListView を貼り付けて View プロパティを Tile にするとタイルが使えます。 Tile サイズも変更可。
使い方のポイントはColmnsとTileColmns。この二つに設定されているものが表示されます。1項目を、項目名とサブ項目名をあわせて先頭から5つ分の5行表示するとします。まずはColmnsに適当に5つ指定。次にTileColmnsに、
xpListView1.TileColumns = new int[] { 1, 2, 3, 4, 5 };
のように指定します。項目名が1でサブ項目の1つ目の要素が2、2つ目の要素が3、…という対応になっています。
XPListViewItem lvitem = new XPListViewItem( new String[] { "あ", "い", "う", "え", "お" } ); xpListView1.TileColumns = new int[] { 1, 2, 3, 3 };
とすると、「あ い う う」が表示されます。実際はスペースじゃなくて改行ですが。
動的にListViewに追加したり削除したりするソースを書いたのですが、TileColumnsは項目を追加するたびに指定してやらないと、きちんと表示されませんでした。
ColmnsがTileColmnsより少ないときは、Colmnsの数までしか表示されません。このへんはcomctl32の制限かな?直接いじったことないので分かりません。
1行目をボールドにするのは、こんな感じ。デモより。
xpListView1.SetColumnStyle( 0, new Font( xpListView1.Font, FontStyle.Bold ), xpListView1.ForeColor, xpListView1.BackColor );
とまあ、こんな感じで、込み入った項目を表示するときにかなり便利です。