다음을 통해 공유


ListView.GetItemAt 메서드

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

네임스페이스: System.Windows.Forms
어셈블리: System.Windows.Forms(system.windows.forms.dll)

구문

‘선언
Public Function GetItemAt ( _
    x As Integer, _
    y As Integer _
) As ListViewItem
‘사용 방법
Dim instance As ListView
Dim x As Integer
Dim y As Integer
Dim returnValue As ListViewItem

returnValue = instance.GetItemAt(x, y)
public ListViewItem GetItemAt (
    int x,
    int y
)
public:
ListViewItem^ GetItemAt (
    int x, 
    int y
)
public ListViewItem GetItemAt (
    int x, 
    int y
)
public function GetItemAt (
    x : int, 
    y : int
) : ListViewItem

매개 변수

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

반환 값

지정한 위치에 항목을 나타내는 ListViewItem. 지정한 위치에 항목이 없으면 이 메서드는 Null 참조(Visual Basic의 경우 Nothing)을 반환합니다.

설명

GetItemAt 메서드를 사용하면 ListView 컨트롤의 클라이언트 영역에 있는 특정 위치에 어떤 항목이 있는지 확인할 수 있습니다. View 속성이 View.Details로 설정되어 있는 경우 사용자가 하위 항목을 클릭 또는 마우스 오른쪽 단추로 클릭할 때 및 사용자가 마우스를 클릭할 때 마우스 좌표에 따라 클릭된 하위 항목을 소유하는 항목을 결정할 때에도 사용할 수 있습니다.

참고

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

ListView에서 끌어서 놓기를 통해 항목의 위치를 조정하려면 GetItemAt 메서드보다 ListViewInsertionMark.NearestIndex 메서드를 사용하는 것이 좋을 수 있습니다. ListViewInsertionMark.NearestIndex 메서드는 마우스 포인터 위치에 관계없이 가장 가까운 항목을 찾는 반면, GetItemAt 메서드는 지정된 위치에 항목이 없으면 Null 참조(Visual Basic의 경우 Nothing)을 반환합니다.

참고

ListViewInsertionMark 클래스는 응용 프로그램에서 Application.EnableVisualStyles 메서드를 호출하는 경우 Windows XP와 Windows Server 2003에서만 사용할 수 있습니다.

예제

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

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)

    ' 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 Not (files Is 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 Not (selection Is Nothing) Then
        PictureBox1.Image = System.Drawing.Image.FromFile _
            (selection.SubItems(1).Text)
    End If


End Sub
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);

    // 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:
   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 );
      
      // 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.set_Width(270);
    listView1.set_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.set_Text("File name");
    header1.set_TextAlign(HorizontalAlignment.Left);
    header1.set_Width(70);

    header2.set_TextAlign(HorizontalAlignment.Left);
    header2.set_Text("Location");
    header2.set_Width(200);
    // Add the headers to the ListView control.
    listView1.get_Columns().Add(header1);
    listView1.get_Columns().Add(header2);
    // 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) {
        for (int iCtr = 0; iCtr < files.length; iCtr++) {
            System.IO.FileInfo file = files[iCtr];
            ListViewItem item = new ListViewItem(file.get_Name());
            item.get_SubItems().Add(file.get_FullName());
            listView1.get_Items().Add(item);
        }
    }
} //PopulateListView

private void InitializePictureBox()
{
    pictureBox1 = new PictureBox();
    // Set the location and size of the PictureBox control.
    this.pictureBox1.set_Location(new System.Drawing.Point(70, 120));
    this.pictureBox1.set_Size(new System.Drawing.Size(140, 140));
    this.pictureBox1.set_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.set_SizeMode(PictureBoxSizeMode.StretchImage);
    // Set the border style to a three-dimensional border.
    this.pictureBox1.set_BorderStyle(BorderStyle.Fixed3D);
    // Add the PictureBox to the form.
    this.get_Controls().Add(this.pictureBox1);
} //InitializePictureBox

private void listView1_MouseDown(Object sender, MouseEventArgs e)
{
    ListViewItem selection = listView1.GetItemAt(e.get_X(), e.get_Y());
    // If the user selects an item in the ListView, display
    // the image in the PictureBox.
    if (selection != null) {
        pictureBox1.set_Image(System.Drawing.Image.FromFile(
            selection.get_SubItems().get_Item(1).get_Text()));
    }
} //listView1_MouseDown

플랫폼

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에서 지원

참고 항목

참조

ListView 클래스
ListView 멤버
System.Windows.Forms 네임스페이스
PointToScreen
PointToClient
ListViewInsertionMark
ListViewItem
Application.EnableVisualStyles

기타 리소스

Windows Forms 좌표