ListView クラス
4 つの異なるビューの 1 つを使用して表示できる項目のコレクションを表示する、Windows リスト ビュー コントロールを表します。
名前空間: System.Windows.Forms
アセンブリ: System.Windows.Forms (system.windows.forms.dll 内)
構文
'宣言
<ComVisibleAttribute(True)> _
<ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)> _
Public Class ListView
Inherits Control
'使用
Dim instance As ListView
[ComVisibleAttribute(true)]
[ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)]
public class ListView : Control
[ComVisibleAttribute(true)]
[ClassInterfaceAttribute(ClassInterfaceType::AutoDispatch)]
public ref class ListView : public Control
/** @attribute ComVisibleAttribute(true) */
/** @attribute ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch) */
public class ListView extends Control
ComVisibleAttribute(true)
ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)
public class ListView extends Control
解説
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 メンバの一部、およびそれらが有効なビューを次の表に示します。
ListView メンバ |
ビュー |
---|---|
Alignment プロパティ |
|
AutoArrange プロパティ |
SmallIcon または LargeIcon |
AutoResizeColumn メソッド |
Details |
Columns プロパティ |
Details または Tile |
DrawSubItem イベント |
Details |
FindItemWithText メソッド |
Details、List、または Tile |
FindNearestItem メソッド |
SmallIcon または LargeIcon |
GetItemAt メソッド |
Details または Tile |
Groups プロパティ |
List 以外のすべてのビュー |
HeaderStyle プロパティ |
Details |
InsertionMark プロパティ |
LargeIcon、SmallIcon、または Tile |
使用例
3 つの ListViewItem オブジェクトが指定され、各項目に 3 つずつ ListViewItem.ListViewSubItem オブジェクトが指定されている ListView コントロールを作成するコード例を次に示します。この例は、ColumnHeader オブジェクトを作成して、詳細ビューにサブ項目を表示することもできます。ListViewItem オブジェクトのイメージを提供するコード例では、2 つの ImageList オブジェクトも作成されています。これらの ImageList オブジェクトは、LargeImageList プロパティおよび SmallImageList プロパティに追加されます。この例では、ListView コントロールの作成時に、次のプロパティを使用します。
View
LabelEdit
AllowColumnReorder
CheckBoxes
FullRowSelect
GridLines
Sorting
この例では、コードを Form に追加し、この例で作成されたメソッドを、フォーム上のコンストラクタまたは別のメソッドから呼び出す必要があります。またこの例では、MySmallImage1
、MySmallImage2
、MyLargeImage1
、MyLargeImage2
という名前の各イメージが C ドライブのルート ディレクトリに保存されている必要があります。
Private Sub CreateMyListView()
' Create a new ListView control.
Dim listView1 As New ListView()
listView1.Bounds = New Rectangle(New Point(10, 10), New Size(300, 200))
' Set the view to show details.
listView1.View = View.Details
' Allow the user to edit item text.
listView1.LabelEdit = True
' Allow the user to rearrange columns.
listView1.AllowColumnReorder = True
' Display check boxes.
listView1.CheckBoxes = True
' Select the item and subitems when selection is made.
listView1.FullRowSelect = True
' Display grid lines.
listView1.GridLines = True
' Sort the items in the list in ascending order.
listView1.Sorting = SortOrder.Ascending
' Create three items and three sets of subitems for each item.
Dim item1 As New ListViewItem("item1", 0)
' Place a check mark next to the item.
item1.Checked = True
item1.SubItems.Add("1")
item1.SubItems.Add("2")
item1.SubItems.Add("3")
Dim item2 As New ListViewItem("item2", 1)
item2.SubItems.Add("4")
item2.SubItems.Add("5")
item2.SubItems.Add("6")
Dim item3 As New ListViewItem("item3", 0)
' Place a check mark next to the item.
item3.Checked = True
item3.SubItems.Add("7")
item3.SubItems.Add("8")
item3.SubItems.Add("9")
' Create columns for the items and subitems.
listView1.Columns.Add("Item Column", -2, HorizontalAlignment.Left)
listView1.Columns.Add("Column 2", -2, HorizontalAlignment.Left)
listView1.Columns.Add("Column 3", -2, HorizontalAlignment.Left)
listView1.Columns.Add("Column 4", -2, HorizontalAlignment.Center)
'Add the items to the ListView.
listView1.Items.AddRange(New ListViewItem() {item1, item2, item3})
' Create two ImageList objects.
Dim imageListSmall As New ImageList()
Dim imageListLarge As New ImageList()
' Initialize the ImageList objects with bitmaps.
imageListSmall.Images.Add(Bitmap.FromFile("C:\MySmallImage1.bmp"))
imageListSmall.Images.Add(Bitmap.FromFile("C:\MySmallImage2.bmp"))
imageListLarge.Images.Add(Bitmap.FromFile("C:\MyLargeImage1.bmp"))
imageListLarge.Images.Add(Bitmap.FromFile("C:\MyLargeImage2.bmp"))
'Assign the ImageList objects to the ListView.
listView1.LargeImageList = imageListLarge
listView1.SmallImageList = imageListSmall
' Add the ListView to the control collection.
Me.Controls.Add(listView1)
End Sub 'CreateMyListView
private void CreateMyListView()
{
// Create a new ListView control.
ListView listView1 = new ListView();
listView1.Bounds = new Rectangle(new Point(10,10), new Size(300,200));
// Set the view to show details.
listView1.View = View.Details;
// Allow the user to edit item text.
listView1.LabelEdit = true;
// Allow the user to rearrange columns.
listView1.AllowColumnReorder = true;
// Display check boxes.
listView1.CheckBoxes = true;
// Select the item and subitems when selection is made.
listView1.FullRowSelect = true;
// Display grid lines.
listView1.GridLines = true;
// Sort the items in the list in ascending order.
listView1.Sorting = SortOrder.Ascending;
// Create three items and three sets of subitems for each item.
ListViewItem item1 = new ListViewItem("item1",0);
// Place a check mark next to the item.
item1.Checked = true;
item1.SubItems.Add("1");
item1.SubItems.Add("2");
item1.SubItems.Add("3");
ListViewItem item2 = new ListViewItem("item2",1);
item2.SubItems.Add("4");
item2.SubItems.Add("5");
item2.SubItems.Add("6");
ListViewItem item3 = new ListViewItem("item3",0);
// Place a check mark next to the item.
item3.Checked = true;
item3.SubItems.Add("7");
item3.SubItems.Add("8");
item3.SubItems.Add("9");
// Create columns for the items and subitems.
listView1.Columns.Add("Item Column", -2, HorizontalAlignment.Left);
listView1.Columns.Add("Column 2", -2, HorizontalAlignment.Left);
listView1.Columns.Add("Column 3", -2, HorizontalAlignment.Left);
listView1.Columns.Add("Column 4", -2, HorizontalAlignment.Center);
//Add the items to the ListView.
listView1.Items.AddRange(new ListViewItem[]{item1,item2,item3});
// Create two ImageList objects.
ImageList imageListSmall = new ImageList();
ImageList imageListLarge = new ImageList();
// Initialize the ImageList objects with bitmaps.
imageListSmall.Images.Add(Bitmap.FromFile("C:\\MySmallImage1.bmp"));
imageListSmall.Images.Add(Bitmap.FromFile("C:\\MySmallImage2.bmp"));
imageListLarge.Images.Add(Bitmap.FromFile("C:\\MyLargeImage1.bmp"));
imageListLarge.Images.Add(Bitmap.FromFile("C:\\MyLargeImage2.bmp"));
//Assign the ImageList objects to the ListView.
listView1.LargeImageList = imageListLarge;
listView1.SmallImageList = imageListSmall;
// Add the ListView to the control collection.
this.Controls.Add(listView1);
}
private:
void CreateMyListView()
{
// Create a new ListView control.
ListView^ listView1 = gcnew ListView;
listView1->Bounds = Rectangle(Point(10,10),System::Drawing::Size( 300, 200 ));
// Set the view to show details.
listView1->View = View::Details;
// Allow the user to edit item text.
listView1->LabelEdit = true;
// Allow the user to rearrange columns.
listView1->AllowColumnReorder = true;
// Display check boxes.
listView1->CheckBoxes = true;
// Select the item and subitems when selection is made.
listView1->FullRowSelect = true;
// Display grid lines.
listView1->GridLines = true;
// Sort the items in the list in ascending order.
listView1->Sorting = SortOrder::Ascending;
// Create three items and three sets of subitems for each item.
ListViewItem^ item1 = gcnew ListViewItem( "item1",0 );
// Place a check mark next to the item.
item1->Checked = true;
item1->SubItems->Add( "1" );
item1->SubItems->Add( "2" );
item1->SubItems->Add( "3" );
ListViewItem^ item2 = gcnew ListViewItem( "item2",1 );
item2->SubItems->Add( "4" );
item2->SubItems->Add( "5" );
item2->SubItems->Add( "6" );
ListViewItem^ item3 = gcnew ListViewItem( "item3",0 );
// Place a check mark next to the item.
item3->Checked = true;
item3->SubItems->Add( "7" );
item3->SubItems->Add( "8" );
item3->SubItems->Add( "9" );
// Create columns for the items and subitems.
listView1->Columns->Add( "Item Column", -2, HorizontalAlignment::Left );
listView1->Columns->Add( "Column 2", -2, HorizontalAlignment::Left );
listView1->Columns->Add( "Column 3", -2, HorizontalAlignment::Left );
listView1->Columns->Add( "Column 4", -2, HorizontalAlignment::Center );
//Add the items to the ListView.
array<ListViewItem^>^temp1 = {item1,item2,item3};
listView1->Items->AddRange( temp1 );
// Create two ImageList objects.
ImageList^ imageListSmall = gcnew ImageList;
ImageList^ imageListLarge = gcnew ImageList;
// Initialize the ImageList objects with bitmaps.
imageListSmall->Images->Add( Bitmap::FromFile( "C:\\MySmallImage1.bmp" ) );
imageListSmall->Images->Add( Bitmap::FromFile( "C:\\MySmallImage2.bmp" ) );
imageListLarge->Images->Add( Bitmap::FromFile( "C:\\MyLargeImage1.bmp" ) );
imageListLarge->Images->Add( Bitmap::FromFile( "C:\\MyLargeImage2.bmp" ) );
//Assign the ImageList objects to the ListView.
listView1->LargeImageList = imageListLarge;
listView1->SmallImageList = imageListSmall;
// Add the ListView to the control collection.
this->Controls->Add( listView1 );
}
private void CreateMyListView()
{
// Create a new ListView control.
ListView listView1 = new ListView();
listView1.set_Bounds(new Rectangle(new Point(10, 10),
new Size(300, 200)));
// Set the view to show details.
listView1.set_View(View.Details);
// Allow the user to edit item text.
listView1.set_LabelEdit(true);
// Allow the user to rearrange columns.
listView1.set_AllowColumnReorder(true);
// Display check boxes.
listView1.set_CheckBoxes(true);
// Select the item and subitems when selection is made.
listView1.set_FullRowSelect(true);
// Display grid lines.
listView1.set_GridLines(true);
// Sort the items in the list in ascending order.
listView1.set_Sorting(SortOrder.Ascending);
// Create three items and three sets of subitems for each item.
ListViewItem item1 = new ListViewItem("item1", 0);
// Place a check mark next to the item.
item1.set_Checked(true);
item1.get_SubItems().Add("1");
item1.get_SubItems().Add("2");
item1.get_SubItems().Add("3");
ListViewItem item2 = new ListViewItem("item2", 1);
item2.get_SubItems().Add("4");
item2.get_SubItems().Add("5");
item2.get_SubItems().Add("6");
ListViewItem item3 = new ListViewItem("item3", 0);
// Place a check mark next to the item.
item3.set_Checked(true);
item3.get_SubItems().Add("7");
item3.get_SubItems().Add("8");
item3.get_SubItems().Add("9");
// Create columns for the items and subitems.
listView1.get_Columns().Add("Item Column", -2,
HorizontalAlignment.Left);
listView1.get_Columns().Add("Column 2", -2, HorizontalAlignment.Left);
listView1.get_Columns().Add("Column 3", -2, HorizontalAlignment.Left);
listView1.get_Columns().Add("Column 4", -2, HorizontalAlignment.Center);
//Add the items to the ListView.
listView1.get_Items().AddRange(new ListViewItem[] { item1, item2,
item3 });
// Create two ImageList objects.
ImageList imageListSmall = new ImageList();
ImageList imageListLarge = new ImageList();
// Initialize the ImageList objects with bitmaps.
imageListSmall.get_Images().Add(Bitmap.FromFile(
"C:\\MySmallImage1.bmp"));
imageListSmall.get_Images().Add(Bitmap.FromFile(
"C:\\MySmallImage2.bmp"));
imageListLarge.get_Images().Add(Bitmap.FromFile(
"C:\\MyLargeImage1.bmp"));
imageListLarge.get_Images().Add(Bitmap.FromFile(
"C:\\MyLargeImage2.bmp"));
//Assign the ImageList objects to the ListView.
listView1.set_LargeImageList(imageListLarge);
listView1.set_SmallImageList(imageListSmall);
// Add the ListView to the control collection.
this.get_Controls().Add(listView1);
} //CreateMyListView
継承階層
System.Object
System.MarshalByRefObject
System.ComponentModel.Component
System.Windows.Forms.Control
System.Windows.Forms.ListView
スレッド セーフ
この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバの場合は、スレッド セーフであるとは限りません。
プラットフォーム
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。
バージョン情報
.NET Framework
サポート対象 : 2.0、1.1、1.0
.NET Compact Framework
サポート対象 : 2.0、1.0
参照
関連項目
ListView メンバ
System.Windows.Forms 名前空間
ListViewItem
ImageList クラス
Application.EnableVisualStyles