ListView.SelectedIndices 属性
获取控件中选定项的索引。
**命名空间:**System.Windows.Forms
**程序集:**System.Windows.Forms(在 system.windows.forms.dll 中)
语法
声明
Public ReadOnly Property SelectedIndices As SelectedIndexCollection
用法
Dim instance As ListView
Dim value As SelectedIndexCollection
value = instance.SelectedIndices
public SelectedIndexCollection SelectedIndices { get; }
public:
property SelectedIndexCollection^ SelectedIndices {
SelectedIndexCollection^ get ();
}
/** @property */
public SelectedIndexCollection get_SelectedIndices ()
public function get SelectedIndices () : SelectedIndexCollection
属性值
ListView.SelectedIndexCollection,包含选定的项的索引。如果当前没有选定的项,则返回空 ListView.SelectedIndexCollection。
备注
如果在创建 ListView 句柄之前访问 SelectedIndices 属性,则此属性不会包含任何索引。通常在窗体中初次加载 ListView 进行显示时会出现此情况。您可以使用 IsHandleCreated 属性检查是否已创建了该句柄。当 MultiSelect 属性设置为 true 时,此属性返回一个集合,该集合包含 ListView 中的所有选定项的索引。对于单项选择 ListView,此属性返回一个包含单个元素的集合,该元素包含 ListView 中唯一选定的项的索引。有关可以使用集合中的项执行的任务的更多信息,请参见 ListView.SelectedIndexCollection。
如果您要获取 ListView 控件中选定的项的集合,而不是选定项的索引位置,请使用 SelectedItems 属性。
示例
下面的代码示例演示如何使用 SelectedIndices、SelectedIndexChanged 和 HeaderStyle 成员以及 ListView.SelectedIndexCollection 类。若要运行此示例,请将以下代码粘贴到一个窗体中,该窗体包含一个名为 ListView1
的 ListView 对象和一个名为 TextBox1
的 TextBox。从窗体的构造函数或 Load
方法调用 InitializeListView
方法。此示例要求将事件处理程序与 SelectedIndexChanged 事件正确进行关联。
' This method adds two columns to the ListView, setting the Text
' and TextAlign, and Width properties of each ColumnHeader. The
' HeaderStyle property is set to NonClickable since the ColumnClick
' event is not handled. Finally the method adds ListViewItems and
' SubItems to each column.
Private Sub InitializeListView()
Me.ListView1 = New System.Windows.Forms.ListView
Me.ListView1.BackColor = System.Drawing.SystemColors.Control
Me.ListView1.Dock = System.Windows.Forms.DockStyle.Top
Me.ListView1.Location = New System.Drawing.Point(0, 0)
Me.ListView1.Name = "ListView1"
Me.ListView1.Size = New System.Drawing.Size(292, 130)
Me.ListView1.TabIndex = 0
Me.ListView1.View = System.Windows.Forms.View.Details
Me.ListView1.MultiSelect = True
Me.ListView1.HideSelection = False
ListView1.HeaderStyle = ColumnHeaderStyle.Nonclickable
Dim columnHeader1 As New ColumnHeader
With columnHeader1
.Text = "Breakfast Item"
.TextAlign = HorizontalAlignment.Left
.Width = 146
End With
Dim columnHeader2 As New ColumnHeader
With columnHeader2
.Text = "Price Each"
.TextAlign = HorizontalAlignment.Center
.Width = 142
End With
Me.ListView1.Columns.Add(columnHeader1)
Me.ListView1.Columns.Add(columnHeader2)
Dim foodList() As String = New String() {"Juice", "Coffee", _
"Cereal & Milk", "Fruit Plate", "Toast & Jelly", _
"Bagel & Cream Cheese"}
Dim foodPrice() As String = New String() {"1.09", "1.09", _
"2.19", "2.49", "1.49", "1.49"}
Dim count As Integer
For count = 0 To foodList.Length - 1
Dim listItem As New ListViewItem(foodList(count))
listItem.SubItems.Add(foodPrice(count))
ListView1.Items.Add(listItem)
Next
Me.Controls.Add(Me.ListView1)
End Sub
...
' Uses the SelectedIndices property to retrieve and tally the price of
' the selected menu items.
Private Sub ListView1_SelectedIndexChanged_UsingIndices _
(ByVal sender As Object, ByVal e As System.EventArgs) _
Handles ListView1.SelectedIndexChanged
Dim indexes As ListView.SelectedIndexCollection = _
Me.ListView1.SelectedIndices
Dim index As Integer
Dim price As Double = 0.0
For Each index In indexes
price += Double.Parse(Me.ListView1.Items(index).SubItems(1).Text)
Next
' Output the price to TextBox1.
TextBox1.Text = CType(price, String)
End Sub
// This method adds two columns to the ListView, setting the Text
// and TextAlign, and Width properties of each ColumnHeader. The
// HeaderStyle property is set to NonClickable since the ColumnClick
// event is not handled. Finally the method adds ListViewItems and
// SubItems to each column.
private void InitializeListView()
{
this.ListView1 = new System.Windows.Forms.ListView();
this.ListView1.BackColor = System.Drawing.SystemColors.Control;
this.ListView1.Dock = System.Windows.Forms.DockStyle.Top;
this.ListView1.Location = new System.Drawing.Point(0, 0);
this.ListView1.Name = "ListView1";
this.ListView1.Size = new System.Drawing.Size(292, 130);
this.ListView1.TabIndex = 0;
this.ListView1.View = System.Windows.Forms.View.Details;
this.ListView1.MultiSelect = true;
this.ListView1.HideSelection = false;
this.ListView1.HeaderStyle = ColumnHeaderStyle.Nonclickable;
ColumnHeader columnHeader1 = new ColumnHeader();
columnHeader1.Text = "Breakfast Item";
columnHeader1.TextAlign = HorizontalAlignment.Left;
columnHeader1.Width = 146;
ColumnHeader columnHeader2 = new ColumnHeader();
columnHeader2.Text = "Price Each";
columnHeader2.TextAlign = HorizontalAlignment.Center;
columnHeader2.Width = 142;
this.ListView1.Columns.Add(columnHeader1);
this.ListView1.Columns.Add(columnHeader2);
string[] foodList = new string[]{"Juice", "Coffee",
"Cereal & Milk", "Fruit Plate", "Toast & Jelly",
"Bagel & Cream Cheese"};
string[] foodPrice = new string[]{"1.09", "1.09", "2.19",
"2.49", "1.49", "1.49"};
for(int count=0; count < foodList.Length; count++)
{
ListViewItem listItem = new ListViewItem(foodList[count]);
listItem.SubItems.Add(foodPrice[count]);
ListView1.Items.Add(listItem);
}
this.Controls.Add(ListView1);
}
...
// Uses the SelectedIndices property to retrieve and tally the
// price of the selected menu items.
private void ListView1_SelectedIndexChanged_UsingIndices(
object sender, System.EventArgs e)
{
ListView.SelectedIndexCollection indexes =
this.ListView1.SelectedIndices;
double price = 0.0;
foreach ( int index in indexes )
{
price += Double.Parse(
this.ListView1.Items[index].SubItems[1].Text);
}
// Output the price to TextBox1.
TextBox1.Text = price.ToString();
}
// This method adds two columns to the ListView, setting the Text
// and TextAlign, and Width properties of each ColumnHeader. The
// HeaderStyle property is set to NonClickable since the ColumnClick
// event is not handled. Finally the method adds ListViewItems and
// SubItems to each column.
void InitializeListView()
{
this->ListView1 = gcnew System::Windows::Forms::ListView;
this->ListView1->BackColor = System::Drawing::SystemColors::Control;
this->ListView1->Dock = System::Windows::Forms::DockStyle::Top;
this->ListView1->Location = System::Drawing::Point( 0, 0 );
this->ListView1->Name = "ListView1";
this->ListView1->Size = System::Drawing::Size( 292, 130 );
this->ListView1->TabIndex = 0;
this->ListView1->View = System::Windows::Forms::View::Details;
this->ListView1->MultiSelect = true;
this->ListView1->HideSelection = false;
this->ListView1->HeaderStyle = ColumnHeaderStyle::Nonclickable;
ColumnHeader^ columnHeader1 = gcnew ColumnHeader;
columnHeader1->Text = "Breakfast Item";
columnHeader1->TextAlign = HorizontalAlignment::Left;
columnHeader1->Width = 146;
ColumnHeader^ columnHeader2 = gcnew ColumnHeader;
columnHeader2->Text = "Price Each";
columnHeader2->TextAlign = HorizontalAlignment::Center;
columnHeader2->Width = 142;
this->ListView1->Columns->Add( columnHeader1 );
this->ListView1->Columns->Add( columnHeader2 );
array<String^>^foodList = {"Juice","Coffee","Cereal & Milk","Fruit Plate","Toast & Jelly","Bagel & Cream Cheese"};
array<String^>^foodPrice = {"1.09","1.09","2.19","2.49","1.49","1.49"};
for ( int count = 0; count < foodList->Length; count++ )
{
ListViewItem^ listItem = gcnew ListViewItem( foodList[ count ] );
listItem->SubItems->Add( foodPrice[ count ] );
ListView1->Items->Add( listItem );
}
this->Controls->Add( ListView1 );
}
...
// Uses the SelectedIndices property to retrieve and tally the
// price of the selected menu items.
void ListView1_SelectedIndexChanged_UsingIndices( Object^ /*sender*/, System::EventArgs^ /*e*/ )
{
ListView::SelectedIndexCollection^ indexes = this->ListView1->SelectedIndices;
double price = 0.0;
System::Collections::IEnumerator^ myEnum1 = indexes->GetEnumerator();
while ( myEnum1->MoveNext() )
{
int index = safe_cast<int>(myEnum1->Current);
price += Double::Parse( this->ListView1->Items[ index ]->SubItems[ 1 ]->Text );
}
// Output the price to TextBox1.
TextBox1->Text = price.ToString();
}
// This method adds two columns to the ListView, setting the Text
// and TextAlign, and Width properties of each ColumnHeader. The
// HeaderStyle property is set to NonClickable since the ColumnClick
// event is not handled. Finally the method adds ListViewItems and
// SubItems to each column.
private void InitializeListView()
{
this.listView1 = new System.Windows.Forms.ListView();
this.listView1.set_BackColor(
System.Drawing.SystemColors.get_Control());
this.listView1.set_Dock(System.Windows.Forms.DockStyle.Top);
this.listView1.set_Location(new System.Drawing.Point(0, 0));
this.listView1.set_Name("listView1");
this.listView1.set_Size(new System.Drawing.Size(292, 130));
this.listView1.set_TabIndex(0);
this.listView1.set_View(System.Windows.Forms.View.Details);
this.listView1.set_MultiSelect(true);
this.listView1.set_HideSelection(false);
this.listView1.set_HeaderStyle(ColumnHeaderStyle.Nonclickable);
ColumnHeader columnHeader1 = new ColumnHeader();
columnHeader1.set_Text("Breakfast Item");
columnHeader1.set_TextAlign(HorizontalAlignment.Left);
columnHeader1.set_Width(146);
ColumnHeader columnHeader2 = new ColumnHeader();
columnHeader2.set_Text("Price Each");
columnHeader2.set_TextAlign(HorizontalAlignment.Center);
columnHeader2.set_Width(142);
this.listView1.get_Columns().Add(columnHeader1);
this.listView1.get_Columns().Add(columnHeader2);
String foodList[] = new String[] { "Juice", "Coffee", "Cereal & Milk",
"Fruit Plate", "Toast & Jelly", "Bagel & Cream Cheese" };
String foodPrice[] = new String[] { "1.09", "1.09", "2.19", "2.49",
"1.49", "1.49" };
for (int count = 0; count < foodList.get_Length(); count++) {
ListViewItem listItem = new ListViewItem(
foodList.get_Item(count).ToString());
listItem.get_SubItems().Add(foodPrice.get_Item(count).ToString());
listView1.get_Items().Add(listItem);
}
this.get_Controls().Add(listView1);
} //InitializeListView
...
// Uses the SelectedIndices property to retrieve and tally the
// price of the selected menu items.
private void listView1_SelectedIndexChanged_UsingIndices(Object sender,
System.EventArgs e)
{
ListView.SelectedIndexCollection indexes =
this.listView1.get_SelectedIndices();
double price = 0.0;
for (int iCtr = 0; iCtr < indexes.get_Count(); iCtr++) {
int index = indexes.get_Item(iCtr);
price += System.Double.Parse(this.listView1.get_Items().
get_Item(index).get_SubItems().get_Item(1).get_Text());
}
// Output the price to textBox1.
textBox1.set_Text(System.Convert.ToString(price));
} //listView1_SelectedIndexChanged_UsingIndices
平台
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 类
ListView 成员
System.Windows.Forms 命名空间
ListView.SelectedIndexCollection
SelectedItems