ListView.GetItemAt(Int32, Int32) 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
지정한 위치에서 항목을 검색합니다.
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 각각 사용하여 BorderStyle 및 PictureBox.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 메서드.
적용 대상
추가 정보
.NET