ListView.GetItemAt(Int32, Int32) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ruft das Element an der angegebenen Position ab.
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
Die x-Koordinate der Position für die Suche nach einem Element (ausgedrückt in Clientkoordinaten).
- y
- Int32
Die y-Koordinate der Position für die Suche nach einem Element (ausgedrückt in Clientkoordinaten).
Gibt zurück
Ein ListViewItem, das das Element an der angegebenen Position darstellt. Wenn sich an der angegebenen Position kein Element befindet, gibt die Methode null
zurück.
Beispiele
Im folgenden Codebeispiel wird die Verwendung der PictureBox Steuerelemente und ListView veranschaulicht. Die PictureBox wird initialisiert, indem die PictureBox.BorderStyle und PictureBox.SizeMode Eigenschaften mithilfe der BorderStyle und PictureBoxSizeMode Enumerationen, bzw. Der ListView wird mit Bildern aus dem Verzeichnis Samples aufgefüllt. Die GetItemAt -Methode wird bei der Behandlung des -Ereignisses des ListView Steuerelements MouseDown verwendet, um zu bestimmen, ob ein Element ausgewählt ist. Wenn ein Element ausgewählt ist, zeigt der Ereignishandler die ausgewählte Datei an, indem er die PictureBox.Image -Eigenschaft festlegt. Das Beispiel erfordert das Vorhandensein von JPG-Dateien im Verzeichnis C:\documents and Settings\All Users\Documents\My Pictures\Sample Pictures. Fügen Sie zum Ausführen dieses Beispiels den Code in ein Formular ein, und rufen Sie die InitializePictureBox
Methoden und PopulateListView
im Konstruktor oder Load
der Methode des Formulars auf. Stellen Sie sicher, dass alle Ereignisse ihren Ereignishandlern zugeordnet sind.
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
Hinweise
Mit GetItemAt der -Methode können Sie bestimmen, welches Element sich an einer bestimmten Position innerhalb der Clientregion des ListView Steuerelements befindet. Sie können diese Methode verwenden, wenn der Benutzer mit der rechten Maustaste auf ein Unterelement klickt (wenn die View Eigenschaft auf View.Details
festgelegt ist) und Sie bestimmen möchten, welches Element das Unterelement besitzt, auf das basierend auf den Mauskoordinaten zum Zeitpunkt des Klickens des Benutzers auf die Maus geklickt wurde.
Hinweis
Wenn der FullRowSelect Eigenschaftswert ist false
, gibt diese Methode ein Element nur zurück, wenn sich die angegebene Position innerhalb der Grenzen des übergeordneten Elements befindet (die in der ersten Spalte angezeigt wird, wenn sich das Steuerelement im Detailmodus befindet). Sie müssen die FullRowSelect -Eigenschaft auf true
festlegen, um ein Element mit dieser Methode abzurufen, wenn eine Position innerhalb der Grenzen eines Unterelements angegeben wird. Sie können die HitTest -Methode auch verwenden, um detaillierte Informationen zum Element an einer bestimmten Stelle abzurufen.
Um die Position von Elementen in einem ListViewper Drag-and-Drop neu zu positionieren, sollten Sie die ListViewInsertionMark.NearestIndex -Methode anstelle der GetItemAt -Methode verwenden. Die ListViewInsertionMark.NearestIndex Methode findet das nächstgelegene Element unabhängig davon, wo sich der Mauszeiger befindet. Die GetItemAt -Methode gibt hingegen zurück null
, wenn sich kein Element an der angegebenen Position befindet.
Hinweis
Die ListViewInsertionMark -Klasse wird nur unter Windows XP und Windows Server 2003 unterstützt, wenn Ihre Anwendung die Application.EnableVisualStyles -Methode aufruft.