ListView.GetItemAt(Int32, Int32) ListView.GetItemAt(Int32, Int32) ListView.GetItemAt(Int32, Int32) ListView.GetItemAt(Int32, Int32) Method

정의

지정한 위치에서 항목을 검색합니다.Retrieves the item at the specified location.

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 Int32 Int32 Int32

항목을 검색할 위치의 x 좌표(클라이언트 좌표로 나타남).The x-coordinate of the location to search for an item (expressed in client coordinates).

y
Int32 Int32 Int32 Int32

항목을 검색할 위치의 y 좌표(클라이언트 좌표로 나타남).The y-coordinate of the location to search for an item (expressed in client coordinates).

반환

지정한 위치에 항목을 나타내는 ListViewItem.A ListViewItem that represents the item at the specified position. 지정한 위치에 항목이 없으면 이 메서드는 null을 반환합니다.If there is no item at the specified location, the method returns null.

예제

다음 코드 예제에서는 합니다 PictureBoxListView 컨트롤입니다.The following code example demonstrates the use of the PictureBox and ListView controls. PictureBox 설정 하 여 초기화 됩니다 합니다 PictureBox.BorderStylePictureBox.SizeMode 사용 하 여 속성을 BorderStylePictureBoxSizeMode 열거형 각각.The PictureBox is initialized by setting the PictureBox.BorderStyle and PictureBox.SizeMode properties using the BorderStyle and PictureBoxSizeMode enumerations, respectively. ListView 샘플 디렉터리에서 사진을 채워집니다.The ListView is populated with pictures from the Samples directory. GetItemAt 메서드는 처리 하는 경우에 사용 합니다 ListView 컨트롤의 MouseDown 항목이 선택 되어 있는지 여부를 결정 하는 이벤트입니다.The GetItemAt method is used in when handling the ListView control's MouseDown event to determine whether an item is selected. 이벤트 처리기를 설정 하 여 선택한 파일 표시 항목을 선택 하는 경우는 PictureBox.Image 속성입니다.If an item is selected, the event handler displays the selected file by setting the PictureBox.Image property. 이 예제에서는 JPG 파일 C:\documents and Settings\All Users\Documents\My Pictures\Sample Pictures 디렉터리에 있어야 합니다.The example requires the existence of JPG files located in the C:\documents and Settings\All Users\Documents\My Pictures\Sample Pictures directory. 이 예제를 실행 하려면 코드를 붙여넣고 폼을 호출 합니다 InitializePictureBoxPopulateListView 폼의 생성자에서 메서드 또는 Load 메서드.To run this example, paste the code into a form and call the InitializePictureBox and PopulateListView methods in the form's constructor or Load method. 모든 이벤트가 해당 이벤트 처리기와 연결 되도록 합니다.Ensure all events are associated with their event handlers.

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 제어 합니다.The GetItemAt method lets you determine which item is located at a specific location within the client region of the ListView control. 사용자가 클릭 하거나 하위 항목을 마우스 오른쪽 단추로 클릭할 때이 메서드를 사용할 수 있습니다 (경우는 View 속성이 View.Details) 사용자가 마우스 클릭 시 마우스 좌표에 따라 하위 항목 클릭 된을 소유 하는 항목을 확인 하려면 .You can use this method when the user clicks or right-clicks a subitem (when the View property is set to View.Details) and you want to determine which item owns the subitem that was clicked based on the mouse coordinates at the time the user clicked the mouse.

참고

경우는 FullRowSelect 속성 값이 false,이 메서드는 부모 항목 (컨트롤 세부 정보 모드에 있을 때 첫 번째 열에 표시 됨)의 범위 내에서 지정한 위치는 경우에 항목을 반환 합니다.When the FullRowSelect property value is false, this method returns an item only when the specified location is within the bounds of the parent item (which is displayed in the first column when the control is in details mode). 설정 해야 합니다 FullRowSelect 속성을 true 하위 항목의 범위 내에서 위치를 지정 합니다.이 메서드를 사용 하 여 항목을 검색 하려면.You must set the FullRowSelect property to true to retrieve an item with this method given a location within the bounds of a subitem. 사용할 수도 있습니다는 HitTest 특정 위치에 있는 항목에 대 한 자세한 정보를 검색 하는 방법입니다.You can also use the HitTest method to retrieve detailed information about the item at a particular location.

내 항목의 위치 변경을 끌어서 놓기 작업을 수행 하는 ListView, 사용 하려는 합니다 ListViewInsertionMark.NearestIndex 메서드 대신 GetItemAt 메서드.To do drag-and-drop repositioning of items within a ListView, you might want to use the ListViewInsertionMark.NearestIndex method rather than the GetItemAt method. ListViewInsertionMark.NearestIndex 메서드 마우스 포인터가 있는 위치에 관계 없이 가장 가까운 항목을 찾습니다.The ListViewInsertionMark.NearestIndex method finds the closest item regardless of where the mouse pointer is located. 합니다 GetItemAt 메서드를 다른 한편으로 반환 합니다. null 지정된 된 위치에 항목이 없는 경우.The GetItemAt method, on the other hand, returns null if there is no item at the specified location.

참고

합니다 ListViewInsertionMark 클래스는 애플리케이션에서 호출 하는 경우 Windows XP 및 Windows Server 2003 에서만 지원 됩니다는 Application.EnableVisualStyles 메서드.The ListViewInsertionMark class is supported only on Windows XP and Windows Server 2003 when your application calls the Application.EnableVisualStyles method.

적용 대상

추가 정보