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).

戻り値

AListViewItem指定した位置にある項目を表します。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. 例では、C:\documents and Users\Documents\My Pictures \sample pictures の別のディレクトリ内にある JPG ファイルが存在する必要があります。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.

適用対象

こちらもご覧ください