ListView.SelectedIndexChanged 事件
当列表视图控件中选定的项的索引更改时发生。
**命名空间:**System.Windows.Forms
**程序集:**System.Windows.Forms(在 system.windows.forms.dll 中)
语法
声明
Public Event SelectedIndexChanged As EventHandler
用法
Dim instance As ListView
Dim handler As EventHandler
AddHandler instance.SelectedIndexChanged, handler
public event EventHandler SelectedIndexChanged
public:
event EventHandler^ SelectedIndexChanged {
void add (EventHandler^ value);
void remove (EventHandler^ value);
}
/** @event */
public void add_SelectedIndexChanged (EventHandler value)
/** @event */
public void remove_SelectedIndexChanged (EventHandler value)
JScript 支持使用事件,但不支持进行新的声明。
备注
每当选定的项的索引位置更改时,SelectedIndexChanged 事件就在单项选择 ListView 控件中发生。在多重选择 ListView 控件中,每当将项移除或添至选定项的列表中时,该事件都会发生。要确定在 ListView 控件中选定哪些项,请使用 SelectedItems 属性来访问 ListView.SelectedListViewItemCollection。您可以为该事件创建事件处理程序,在 ListView 控件中选定的项发生更改的任何时间执行任务。
有关处理事件的更多信息,请参见 使用事件。
示例
下面的代码示例阐释了如何使用 SelectedItems、SelectedIndexChanged 事件以及 HeaderStyle 成员和 ListView.SelectedListViewItemCollection 类。若要运行此示例,请将以下代码粘贴到一个窗体中,该窗体包含一个名为 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 SelectedItems property to retrieve and tally the price
' of the selected menu items.
Private Sub ListView1_SelectedIndexChanged_UsingItems _
(ByVal sender As Object, ByVal e As System.EventArgs) _
Handles ListView1.SelectedIndexChanged
Dim breakfast As ListView.SelectedListViewItemCollection = _
Me.ListView1.SelectedItems
Dim item As ListViewItem
Dim price As Double = 0.0
For Each item In breakfast
price += Double.Parse(item.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 SelectedItems property to retrieve and tally the price
// of the selected menu items.
private void ListView1_SelectedIndexChanged_UsingItems(
object sender, System.EventArgs e)
{
ListView.SelectedListViewItemCollection breakfast =
this.ListView1.SelectedItems;
double price = 0.0;
foreach ( ListViewItem item in breakfast )
{
price += Double.Parse(item.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 SelectedItems property to retrieve and tally the price
// of the selected menu items.
void ListView1_SelectedIndexChanged_UsingItems( Object^ /*sender*/, System::EventArgs^ /*e*/ )
{
ListView::SelectedListViewItemCollection^ breakfast = this->ListView1->SelectedItems;
double price = 0.0;
System::Collections::IEnumerator^ myEnum = breakfast->GetEnumerator();
while ( myEnum->MoveNext() )
{
ListViewItem^ item = safe_cast<ListViewItem^>(myEnum->Current);
price += Double::Parse( item->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 SelectedItems property to retrieve and tally the price
// of the selected menu items.
private void listView1_SelectedIndexChanged_UsingItems(Object sender,
System.EventArgs e)
{
ListView.SelectedListViewItemCollection breakfast =
this.listView1.get_SelectedItems();
double price = 0.0;
for (int iCtr = 0; iCtr < breakfast.get_Count(); iCtr++) {
ListViewItem item = breakfast.get_Item(iCtr);
price += System.Double.Parse(item.get_SubItems().get_Item(1).
get_Text().ToString());
}
// Output the price to textBox1.
textBox1.set_Text(System.Convert.ToString(price));
} //listView1_SelectedIndexChanged_UsingItems
平台
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 命名空间
OnSelectedIndexChanged
EventHandler
ListView.SelectedIndices 属性
ListView.SelectedItems 属性