ListView.GetItemAt(Int32, Int32) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Načte položku v zadaném umístění.
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
Parametry
- x
- Int32
Souřadnice x umístění pro vyhledání položky (vyjádřené v souřadnicích klienta)
- y
- Int32
Souřadnice y umístění pro hledání položky (vyjádřená v souřadnicích klienta).
Návraty
A ListViewItem , který představuje položku na zadané pozici. Pokud v zadaném umístění není žádná položka, metoda vrátí null.
Příklady
Následující příklad kódu ukazuje použití PictureBox a ListView ovládací prvky. Inicializuje se PictureBox nastavením PictureBox.BorderStyle a PictureBox.SizeMode vlastností pomocí BorderStyle výčtů a PictureBoxSizeMode výčtů. Vyplní se ListView obrázky z adresáře Ukázky. Metoda GetItemAt se používá při zpracování ListView události ovládacího prvku MouseDown k určení, zda je vybrána položka. Pokud je vybrána položka, obslužná rutina události zobrazí vybraný soubor nastavením PictureBox.Image vlastnosti. Příklad vyžaduje existenci souborů JPG umístěných v adresáři C:\documents a Settings\All Users\Documents\My Pictures\Sample Pictures. Pokud chcete tento příklad spustit, vložte kód do formuláře a volejte InitializePictureBox metody PopulateListView v konstruktoru nebo Load metodě formuláře. Ujistěte se, že jsou všechny události přidružené k jejich obslužným rutinám událostí.
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
Poznámky
Tato GetItemAt metoda umožňuje určit, která položka se nachází v určitém umístění v rámci klientské oblasti ListView ovládacího prvku. Tuto metodu můžete použít, když uživatel klikne nebo klikne pravým tlačítkem myši na podnabídku (když View je vlastnost nastavena View.Detailsna) a chcete určit, která položka vlastní podnabídku, která byla klikaná na základě souřadnic myši v době, kdy uživatel klikl na myš.
Poznámka:
FullRowSelect Pokud je falsehodnota vlastnosti , tato metoda vrátí položku pouze v případě, že zadané umístění je v mezích nadřazené položky (který se zobrazí v prvním sloupci, když je ovládací prvek v režimu podrobností). Je nutné nastavit FullRowSelect vlastnost k true načtení položky s touto metodou dané umístění v mezích poditého. Pomocí metody můžete také HitTest načíst podrobné informace o položce v určitém umístění.
Chcete-li provést přemísťování položek v rámci objektu ListView, můžete místo metody použít ListViewInsertionMark.NearestIndex metodu GetItemAt . Metoda ListViewInsertionMark.NearestIndex najde nejbližší položku bez ohledu na umístění ukazatele myši. Metoda GetItemAt na druhé straně vrátí null , pokud v zadaném umístění není žádná položka.
Poznámka:
Třída ListViewInsertionMark je podporována pouze v systému Windows XP a Windows Server 2003, když aplikace volá metodu Application.EnableVisualStyles .