다음을 통해 공유


ListView.GetItemAt(Int32, Int32) 메서드

정의

지정한 위치에서 항목을 검색합니다.

public:
 System::Windows::Forms::ListViewItem ^ GetItemAt(int x, int y);
public System.Windows.Forms.ListViewItem GetItemAt (int x, int y);
public System.Windows.Forms.ListViewItem? GetItemAt (int x, int y);
member this.GetItemAt : int * int -> System.Windows.Forms.ListViewItem
Public Function GetItemAt (x As Integer, y As Integer) As ListViewItem

매개 변수

x
Int32

항목을 검색할 위치의 x 좌표(클라이언트 좌표로 나타남).

y
Int32

항목을 검색할 위치의 y 좌표(클라이언트 좌표로 나타남).

반환

지정한 위치에 항목을 나타내는 ListViewItem. 지정한 위치에 항목이 없으면 이 메서드는 null을 반환합니다.

예제

다음 코드 예제에서는 사용 PictureBox 하 여 보여 줍니다는 및 ListView 컨트롤입니다. 는 PictureBox 및 열거형을 PictureBox.BorderStyle 각각 사용하여 BorderStylePictureBox.SizeModePictureBoxSizeMode 속성을 설정하여 초기화됩니다. 는 ListView Samples 디렉터리의 그림으로 채워집니다. 메서드는 GetItemAt 컨트롤의 MouseDown 이벤트를 처리할 ListView 때 항목이 선택되었는지 여부를 확인하는 데 사용됩니다. 항목을 선택한 경우 이벤트 처리기는 속성을 설정 PictureBox.Image 하여 선택한 파일을 표시합니다. 이 예제에서는 C:\documents 및 Settings\All Users\Documents\My Pictures\Sample Pictures 디렉터리에 있는 JPG 파일이 있어야 합니다. 이 예제를 실행하려면 코드를 폼에 붙여넣고 폼의 생성자 또는 Load 메서드에서 및 PopulateListView 메서드를 호출 InitializePictureBox 합니다. 모든 이벤트가 해당 이벤트 처리기와 연결되어 있는지 확인합니다.

private:
   void PopulateListView()
   {
      ListView1->Width = 270;
      ListView1->Location = System::Drawing::Point( 10, 10 );
      
      // Declare and construct the ColumnHeader objects.
      ColumnHeader^ header1;
      ColumnHeader^ header2;
      header1 = gcnew ColumnHeader;
      header2 = gcnew ColumnHeader;
      
      // Set the text, alignment and width for each column header.
      header1->Text = "File name";
      header1->TextAlign = HorizontalAlignment::Left;
      header1->Width = 70;
      header2->TextAlign = HorizontalAlignment::Left;
      header2->Text = "Location";
      header2->Width = 200;
      
      // Add the headers to the ListView control.
      ListView1->Columns->Add( header1 );
      ListView1->Columns->Add( header2 );
            
      // Specify that each item appears on a separate line.
      ListView1->View = View::Details;

      // Populate the ListView.Items property.
      // Set the directory to the sample picture directory.
      System::IO::DirectoryInfo^ dirInfo = gcnew System::IO::DirectoryInfo( "C:\\Documents and Settings\\All Users"
      "\\Documents\\My Pictures\\Sample Pictures" );
      
      // Get the .jpg files from the directory
      array<System::IO::FileInfo^>^files = dirInfo->GetFiles( "*.jpg" );
      
      // Add each file name and full name including path
      // to the ListView.
      if ( files != nullptr )
      {
         System::Collections::IEnumerator^ myEnum = files->GetEnumerator();
         while ( myEnum->MoveNext() )
         {
            System::IO::FileInfo^ file = safe_cast<System::IO::FileInfo^>(myEnum->Current);
            ListViewItem^ item = gcnew ListViewItem( file->Name );
            item->SubItems->Add( file->FullName );
            ListView1->Items->Add( item );
         }
      }
   }

   void InitializePictureBox()
   {
      PictureBox1 = gcnew PictureBox;
      
      // Set the location and size of the PictureBox control.
      this->PictureBox1->Location = System::Drawing::Point( 70, 120 );
      this->PictureBox1->Size = System::Drawing::Size( 140, 140 );
      this->PictureBox1->TabStop = false;
      
      // Set the SizeMode property to the StretchImage value.  This
      // will shrink or enlarge the image as needed to fit into
      // the PictureBox.
      this->PictureBox1->SizeMode = PictureBoxSizeMode::StretchImage;
      
      // Set the border style to a three-dimensional border.
      this->PictureBox1->BorderStyle = BorderStyle::Fixed3D;
      
      // Add the PictureBox to the form.
      this->Controls->Add( this->PictureBox1 );
   }

   void ListView1_MouseDown( Object^ /*sender*/, MouseEventArgs^ e )
   {
      ListViewItem^ selection = ListView1->GetItemAt( e->X, e->Y );
      
      // If the user selects an item in the ListView, display
      // the image in the PictureBox.
      if ( selection != nullptr )
      {
         PictureBox1->Image = System::Drawing::Image::FromFile( selection->SubItems[ 1 ]->Text );
      }
   }
private void PopulateListView()
{
    ListView1.Width = 270;
    ListView1.Location = new System.Drawing.Point(10, 10);

    // Declare and construct the ColumnHeader objects.
    ColumnHeader header1, header2;
    header1 = new ColumnHeader();
    header2 = new ColumnHeader();

    // Set the text, alignment and width for each column header.
    header1.Text = "File name";
    header1.TextAlign = HorizontalAlignment.Left;
    header1.Width = 70;

    header2.TextAlign = HorizontalAlignment.Left;
    header2.Text = "Location";
    header2.Width = 200;

    // Add the headers to the ListView control.
    ListView1.Columns.Add(header1);
    ListView1.Columns.Add(header2);

    // Specify that each item appears on a separate line.
    ListView1.View = View.Details;
    
    // Populate the ListView.Items property.
    // Set the directory to the sample picture directory.
    System.IO.DirectoryInfo dirInfo = 
        new System.IO.DirectoryInfo(
        "C:\\Documents and Settings\\All Users" +
        "\\Documents\\My Pictures\\Sample Pictures");

    // Get the .jpg files from the directory
    System.IO.FileInfo[] files = dirInfo.GetFiles("*.jpg");

    // Add each file name and full name including path
    // to the ListView.
    if (files != null)
    {
        foreach ( System.IO.FileInfo file in files )
        {
            ListViewItem item = new ListViewItem(file.Name);
            item.SubItems.Add(file.FullName);
            ListView1.Items.Add(item);
        }
    }
}

private void InitializePictureBox()
{
    PictureBox1 = new PictureBox();

    // Set the location and size of the PictureBox control.
    this.PictureBox1.Location = new System.Drawing.Point(70, 120);
    this.PictureBox1.Size = new System.Drawing.Size(140, 140);
    this.PictureBox1.TabStop = false;

    // Set the SizeMode property to the StretchImage value.  This
    // will shrink or enlarge the image as needed to fit into
    // the PictureBox.
    this.PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;

    // Set the border style to a three-dimensional border.
    this.PictureBox1.BorderStyle = BorderStyle.Fixed3D;

    // Add the PictureBox to the form.
    this.Controls.Add(this.PictureBox1);
}

private void ListView1_MouseDown(object sender, MouseEventArgs e)
{

    ListViewItem selection = ListView1.GetItemAt(e.X, e.Y);

    // If the user selects an item in the ListView, display
    // the image in the PictureBox.
    if (selection != null)
    {
        PictureBox1.Image = System.Drawing.Image.FromFile(
            selection.SubItems[1].Text);
    }
}
Private Sub PopulateListView()
    ListView1.Width = 270
    ListView1.Location = New System.Drawing.Point(10, 10)

    ' Declare and construct the ColumnHeader objects.
    Dim header1, header2 As ColumnHeader
    header1 = New ColumnHeader
    header2 = New ColumnHeader

    ' Set the text, alignment and width for each column header.
    header1.Text = "File name"
    header1.TextAlign = HorizontalAlignment.Left
    header1.Width = 70

    header2.TextAlign = HorizontalAlignment.Left
    header2.Text = "Location"
    header2.Width = 200

    ' Add the headers to the ListView control.
    ListView1.Columns.Add(header1)
    ListView1.Columns.Add(header2)

    ' Specify that each item appears on a separate line.
    ListView1.View = View.Details

    ' Populate the ListView.Items property.
    ' Set the directory to the sample picture directory.
    Dim dirInfo As New System.IO.DirectoryInfo _
        ("C:\Documents and Settings\All Users" _
        & "\Documents\My Pictures\Sample Pictures")
    Dim file As System.IO.FileInfo

    ' Get the .jpg files from the directory
    Dim files() As System.io.FileInfo = dirInfo.GetFiles("*.jpg")

    ' Add each file name and full name including path
    ' to the ListView.
    If (files IsNot Nothing) Then
        For Each file In files
            Dim item As New ListViewItem(file.Name)
            item.SubItems.Add(file.FullName)
            ListView1.Items.Add(item)
        Next
    End If
End Sub

Private Sub InitializePictureBox()
    PictureBox1 = New PictureBox

    ' Set the location and size of the PictureBox control.
    Me.PictureBox1.Location = New System.Drawing.Point(70, 120)
    Me.PictureBox1.Size = New System.Drawing.Size(140, 140)
    Me.PictureBox1.TabStop = False

    ' Set the SizeMode property to the StretchImage value.  This
    ' will shrink or enlarge the image as needed to fit into
    ' the PictureBox.
    Me.PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage

    ' Set the border style to a three-dimensional border.
    Me.PictureBox1.BorderStyle = BorderStyle.Fixed3D

    ' Add the PictureBox to the form.
    Me.Controls.Add(Me.PictureBox1)

End Sub


Private Sub ListView1_MouseDown(ByVal sender As Object, _
    ByVal e As MouseEventArgs) Handles ListView1.MouseDown

    Dim selection As ListViewItem = ListView1.GetItemAt(e.X, e.Y)

    ' If the user selects an item in the ListView, display
    ' the image in the PictureBox.
    If (selection IsNot Nothing) Then
        PictureBox1.Image = System.Drawing.Image.FromFile _
            (selection.SubItems(1).Text)
    End If


End Sub

설명

메서드를 GetItemAt 사용하면 컨트롤의 클라이언트 영역 내 특정 위치에 있는 항목을 확인할 수 ListView 있습니다. 사용자가 하위 항목을 클릭하거나 마우스 오른쪽 단추로 클릭하면(속성이 로 설정된 View.Details경우) 이 메서드를 사용할 수 있으며 사용자가 마우스를 클릭할 때 View 마우스 좌표를 기반으로 클릭한 하위 항목을 소유하는 항목을 확인할 수 있습니다.

참고

속성 값이 FullRowSelect 인 경우 이 메서드는 false지정된 위치가 부모 항목의 범위 내에 있는 경우에만 항목을 반환합니다(컨트롤이 세부 정보 모드에 있을 때 첫 번째 열에 표시됨). 하위 항목의 FullRowSelect 범위 내에 위치가 지정된 경우 이 메서드를 사용하여 항목을 검색하려면 속성을 true 로 설정해야 합니다. 메서드를 HitTest 사용하여 특정 위치에서 항목에 대한 자세한 정보를 검색할 수도 있습니다.

내에서 ListView항목의 끌어서 놓기 위치 변경 작업을 수행하려면 메서드 대신 GetItemAt 메서드를 ListViewInsertionMark.NearestIndex 사용할 수 있습니다. 메서드는 ListViewInsertionMark.NearestIndex 마우스 포인터가 있는 위치에 관계 없이 가장 가까운 항목을 찾습니다. 반면에 메서드는 GetItemAt 지정된 위치에 항목이 없으면 를 반환 null 합니다.

참고

합니다 ListViewInsertionMark 클래스는 애플리케이션에서 호출 하는 경우 Windows XP 및 Windows Server 2003 에서만 지원 됩니다는 Application.EnableVisualStyles 메서드.

적용 대상

추가 정보