ListView.GetItemAt(Int32, Int32) Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Haalt het item op de opgegeven locatie op.
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
Parameters
- x
- Int32
De x-coördinaat van de locatie om naar een item te zoeken (uitgedrukt in clientcoördinaten).
- y
- Int32
De y-coördinaat van de locatie om naar een item te zoeken (uitgedrukt in clientcoördinaten).
Retouren
Een ListViewItem die het item op de opgegeven positie vertegenwoordigt. Als er geen item op de opgegeven locatie is, retourneert nullde methode .
Voorbeelden
In het volgende codevoorbeeld ziet u het gebruik van de PictureBox en ListView besturingselementen. De PictureBox initialisatie wordt geïnitialiseerd door respectievelijk de PictureBox.BorderStyle en PictureBox.SizeMode eigenschappen in te stellen met behulp van de BorderStyle en PictureBoxSizeMode opsommingen. Het ListView bestand wordt gevuld met afbeeldingen uit de map Samples. De GetItemAt methode wordt gebruikt bij het afhandelen van de gebeurtenis van ListView het MouseDown besturingselement om te bepalen of een item is geselecteerd. Als een item is geselecteerd, geeft de gebeurtenis-handler het geselecteerde bestand weer door de eigenschap in te PictureBox.Image stellen. Het voorbeeld vereist het bestaan van JPG-bestanden in de map C:\documents and Settings\All Users\Documents\My Pictures\Sample Pictures. Als u dit voorbeeld wilt uitvoeren, plakt u de code in een formulier en roept u de InitializePictureBox en PopulateListView methoden aan in de constructor of Load methode van het formulier. Zorg ervoor dat alle gebeurtenissen zijn gekoppeld aan hun gebeurtenis-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
Opmerkingen
Met de GetItemAt methode kunt u bepalen welk item zich op een specifieke locatie in de clientregio van het ListView besturingselement bevindt. U kunt deze methode gebruiken wanneer de gebruiker op een subitem klikt of met de rechtermuisknop klikt (wanneer de View eigenschap is ingesteld op View.Details) en u wilt bepalen welk item eigenaar is van het subitem waarop is geklikt op basis van de muiscoördinaten op het moment dat de gebruiker op de muis heeft geklikt.
Note
Wanneer de FullRowSelect eigenschapswaarde is false, retourneert deze methode alleen een item wanneer de opgegeven locatie binnen de grenzen van het bovenliggende item valt (die wordt weergegeven in de eerste kolom wanneer het besturingselement zich in de detailmodus bevindt). U moet de FullRowSelect eigenschap instellen om true een item met deze methode op te halen op basis van een locatie binnen de grenzen van een subitem. U kunt de HitTest methode ook gebruiken om gedetailleerde informatie over het item op een bepaalde locatie op te halen.
Als u het verplaatsen van items binnen een ListViewslepen en neerzetten wilt uitvoeren, kunt u de ListViewInsertionMark.NearestIndex methode gebruiken in plaats van de GetItemAt methode. Met de ListViewInsertionMark.NearestIndex methode wordt het dichtstbijzijnde item gevonden, ongeacht waar de muiswijzer zich bevindt. De GetItemAt methode retourneert null daarentegen als er geen item op de opgegeven locatie is.
Note
De klasse ListViewInsertionMark wordt alleen ondersteund op Windows XP en Windows Server 2003 wanneer uw toepassing de methode Application.EnableVisualStyles aanroept.