다음을 통해 공유


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, SelectedIndexChangedHeaderStyle 멤버와 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