ListView.GetItemAt(Int32, Int32) Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mengambil item di lokasi yang ditentukan.
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
Parameter
- x
- Int32
Koordinat x lokasi untuk mencari item (dinyatakan dalam koordinat klien).
- y
- Int32
Koordinat y lokasi untuk mencari item (dinyatakan dalam koordinat klien).
Mengembalikan
ListViewItem yang mewakili item pada posisi yang ditentukan. Jika tidak ada item di lokasi yang ditentukan, metode akan mengembalikan null
.
Contoh
Contoh kode berikut menunjukkan penggunaan PictureBox kontrol dan ListView .
PictureBox diinisialisasi dengan mengatur PictureBox.BorderStyle properti dan PictureBox.SizeMode masing-masing menggunakan BorderStyle enumerasi dan PictureBoxSizeMode . diisi ListView dengan gambar dari direktori Sampel. Metode GetItemAt ini digunakan saat menangani ListView peristiwa kontrol MouseDown untuk menentukan apakah item dipilih. Jika item dipilih, penanganan aktivitas menampilkan file yang dipilih dengan mengatur PictureBox.Image properti . Contoh ini memerlukan keberadaan file JPG yang terletak di direktori C:\documents and Settings\All Users\Documents\My Pictures\Sample Pictures. Untuk menjalankan contoh ini, tempelkan kode ke dalam formulir dan panggil InitializePictureBox
metode dan PopulateListView
dalam konstruktor atau Load
metode formulir. Pastikan semua peristiwa dikaitkan dengan penanganan aktivitas mereka.
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
Keterangan
Metode ini GetItemAt memungkinkan Anda menentukan item mana yang terletak di lokasi tertentu dalam wilayah ListView klien kontrol. Anda dapat menggunakan metode ini ketika pengguna mengklik atau mengklik kanan subitem (ketika View properti diatur ke View.Details
) dan Anda ingin menentukan item mana yang memiliki subitem yang diklik berdasarkan koordinat mouse pada saat pengguna mengklik mouse.
Catatan
FullRowSelect Ketika nilai properti adalah false
, metode ini mengembalikan item hanya ketika lokasi yang ditentukan berada dalam batas item induk (yang ditampilkan di kolom pertama saat kontrol berada dalam mode detail). Anda harus mengatur FullRowSelect properti ke untuk true
mengambil item dengan metode ini yang diberikan lokasi dalam batas subitem. Anda juga dapat menggunakan HitTest metode untuk mengambil informasi terperinci tentang item di lokasi tertentu.
Untuk melakukan reposisi item seret dan letakkan dalam ListView, Anda mungkin ingin menggunakan ListViewInsertionMark.NearestIndex metode daripada GetItemAt metode . Metode menemukan ListViewInsertionMark.NearestIndex item terdekat terlepas dari di mana penunjuk mouse berada. Metode ini GetItemAt , di sisi lain, mengembalikan null
jika tidak ada item di lokasi yang ditentukan.
Catatan
Kelas ListViewInsertionMark ini hanya didukung pada Windows XP dan Windows Server 2003 saat aplikasi Anda memanggil metode .Application.EnableVisualStyles