ListView コントロールを使用すると、項目の一覧と共に、項目のテキスト、およびオプションとして項目の型を識別するアイコンを表示できます。たとえば、Windows エクスプローラのファイルの一覧の表示形式は ListView コントロールに似ています。ツリーの中で現在選択されているファイルおよびフォルダの一覧が表示されます。各ファイルおよびフォルダには関連付けられているアイコンが表示されるため、それによってファイルやフォルダの種類を識別できます。ListViewItem クラスは、ListView コントロール内の項目を表します。一覧に表示される項目は、5 つの異なるビューの 1 つで表示できます。項目は、大きいアイコン、小さいアイコン、または垂直方向の一覧の中の小さいアイコンとして表示できます。また、項目は親項目に関連する情報を含むサブ項目を持つこともできます。詳細ビューを使用すると、項目とそのサブ項目を、サブ項目に表示される情報を識別する列ヘッダーの付いたグリッドで表示できます。タイル ビューは、後述のように使用できない場合がありますが、タイル ビューを使用すると、項目とそのサブ項目を、テキストの情報の横に大きなアイコンが配置されたタイルとして表示できます。ListView では、単一選択または複数選択がサポートされています。複数選択機能があるため、ユーザーは ListBox コントロールと同様の方法で項目の一覧から選択できます。さらに、ユーザーは選択した項目をアクティブにして、タスクを実行できます。たとえば、ListView コントロールを使用して、アプリケーションが開いて利用できるファイルの一覧を表示できます。ユーザーは開くファイルを選択し、ダブルクリックして項目をアクティブにし、アプリケーションでそのファイルを開くことができます。また、ListView では、CheckBoxes プロパティを使用してチェック ボックスを表示できます。チェック ボックスを使用すると、ユーザーはアクションを実行する対象の項目をチェックできます。ListView コントロールは、さまざまな用途に使用できます。コントロールを使用して、アプリケーション、データベース、またはテキスト ファイルから情報を表示できます。また、ListView を使用すると、処理対象のファイルのセットの選択など、ユーザーからの情報を取得できます。
ListView には、表示形式や動作の柔軟性を提供する多数のプロパティが用意されています。View プロパティを使用すると、項目の表示方法を変更できます。LargeImageList、SmallImageList、StateImageList の各プロパティを使用すると、項目に対して表示されるイメージを格納した ImageList オブジェクトを指定できる他、StateImageList の場合には、CheckBoxes プロパティが true に設定されているときに表示されるチェック ボックスを指定できます。どの項目がチェックされているかを確認するには、CheckedItems プロパティを使用して ListView.CheckedListViewItemCollection コレクションにアクセスします。Columns プロパティを使用して、コントロールの View プロパティが Details に設定されているときに表示される列ヘッダーを格納している ListView.ColumnHeaderCollection にアクセスできます。項目は、Items プロパティを使用して ListView に追加および削除されます。Items プロパティを使用すると、コントロールの項目を操作するためのメソッドを提供する、コントロールの ListView.ListViewItemCollection にアクセスできます。ユーザーが項目のテキストを編集できるようにするには、LabelEdit プロパティを使用します。コントロールに多数の項目が含まれる場合は、ユーザーにとって、並べ替えられたリストの方が見やすくなります。Sorting プロパティを使用すると、項目がアルファベット順に並べ替えられます。また、ListView コントロールの外観を完全にカスタマイズすることもできます。これを行うには、OwnerDraw プロパティを true に設定し、DrawItem、DrawSubItem、DrawColumnHeader の各イベントのいずれか 1 つ以上を処理します。
ListView コントロールのプロパティの多くは、コントロールの View プロパティが Details に設定されているときに使用されます。AllowColumnReorder プロパティを使用すると、ListView コントロールのユーザーは実行時に列の順序を再設定できます。FullRowSelect プロパティを使用すると、項目だけでなく、項目とそのサブ項目を選択できます。詳細ビューにグリッド線を表示して ListView の項目とサブ項目の境界を識別するには、GridLines プロパティを使用します。HeaderStyle プロパティを使用すると、表示する列ヘッダーの種類を指定できます。
ListView コントロールで使用できる多数のプロパティに加えて、ListView に追加の機能を提供するためにアプリケーションが使用できるメソッドおよびイベントがあります。BeginUpdate メソッドと EndUpdate メソッドを使用すると、項目が追加されるたびにコントロールが再描画されないようにすることにより、ListView に多数の項目を追加した場合にパフォーマンスが向上します。ListView コントロールが項目およびサブ項目を表示している場合は、ユーザーがサブ項目を右クリックしたときに機能を提供する必要があります。サブ項目がクリックされた項目を確認するには、GetItemAt メソッドを使用します。ユーザーが項目を編集した後で、項目の検証を実行するときに、変更する必要のある特定の項目をユーザーに表示する必要があります。EnsureVisible メソッドを呼び出すと、特定の項目をコントロールの表示領域に入れることができます。
LabelEdit プロパティが true に設定されている場合は、BeforeLabelEdit イベントおよび AfterLabelEdit イベントのイベント ハンドラを作成することによって、テキストの変更前後で編集対象のテキストの検証などのタスクを実行できます。ファイルのオープンや ListView に表示される項目を編集するダイアログ ボックスの表示などのタスクを実行するには、ItemActivate イベントのイベント ハンドラを作成します。ユーザーが列ヘッダーをクリックすると ListView で項目を並べ替えられるようにするには、並べ替えを実行する ColumnClick イベントのイベント ハンドラを作成します。CheckBoxes プロパティが true に設定されている場合は、ItemCheck イベントを処理することによって、項目のチェックの状態にいつ変更があったかを確認できます。
また、BackgroundImage プロパティを使用して、ListView の背景イメージを設定することもできます。ListView コントロールの背景イメージを正しく表示するには、アプリケーションの Main メソッドに STAThreadAttribute が存在する必要があります。さらに、背景イメージを使用した ListView コントロールが Internet Explorer でホストされる場合は、アプリケーションのマニフェスト ファイルで comctl32.dll Version 6.0 を依存アセンブリとして指定して、背景イメージが正しく表示されるようにします。
メモ |
|---|
| ListView コントロールの Cursor プロパティを設定しても、.NET Framework Version 1.1 以前のカーソルの外観には反映されません。 |
Windows XP および Windows Server 2003 には、アプリケーションから Application.EnableVisualStyles メソッドが呼び出された場合に ListView コントロールを拡張する、タイル ビュー、グループ化、および挿入マークの 3 つの機能が用意されています。
タイル ビューを使用すると、大きなアイコンの横に項目とサブ項目を表示することにより、グラフィックスの情報とテキストの情報のバランスをとることができます。この動作を有効にするには、View プロパティを View.Tile に設定します。
グループ化機能を使用すると、項目を関連カテゴリにビジュアルにグループ化できます。この機能を有効にする場合は、Groups プロパティを使用して、ListViewGroup オブジェクトを ListView コントロールに追加します。この機能を一時的に無効にするには、ShowGroups プロパティを false に設定します。
挿入マーク機能を使用すると、ドロップ位置を示すビジュアルなフィードバックを利用したドラッグ アンド ドロップによる項目の再配置を実現できます。挿入マークを表示するには、InsertionMark プロパティを通じて取得した ListViewInsertionMark オブジェクトを使用します。
これらの機能は、Windows XP および Windows Server 2003 でだけ使用できます。それより前のプラットフォームでは、これらの機能に関連するコードは無効で、タイル ビューは大きなアイコンのビューとして表示され、挿入マークとグループは表示されません。場合によっては、これらの機能が使用できるかどうかを確認し、使用できない場合は代替機能を提供するコードを用意します。これらの機能は、オペレーティング システムのテーマ機能を提供しているライブラリと同じライブラリによって提供されます。このライブラリが使用できるかどうかを確認するには、FeatureSupport.IsPresent(Object) メソッド オーバーロードを呼び出し、OSFeature.Themes 値を渡します。
ListView メンバの一部、およびそれらが有効なビューを次の表に示します。