Ler em inglês

Compartilhar via


ListView.GetItemAt(Int32, Int32) Método

Definição

Recupera o item no local especificado.

C#
public System.Windows.Forms.ListViewItem GetItemAt(int x, int y);
C#
public System.Windows.Forms.ListViewItem? GetItemAt(int x, int y);

Parâmetros

x
Int32

A coordenada X do local para pesquisar um item (expresso em coordenadas do cliente).

y
Int32

A coordenada Y do local no qual pesquisar por um item (expresso em coordenadas do cliente).

Retornos

Um ListViewItem que representa o item na posição especificada. Se não houver nenhum item no local especificado, o método retornará null.

Exemplos

O exemplo de código a seguir demonstra o uso dos PictureBox controles e ListView . O PictureBox é inicializado definindo as PictureBox.BorderStyle propriedades e PictureBox.SizeMode usando as BorderStyle enumerações e PictureBoxSizeMode , respectivamente. O ListView é preenchido com imagens do diretório Exemplos. O GetItemAt método é usado em ao manipular o ListView evento do MouseDown controle para determinar se um item está selecionado. Se um item for selecionado, o manipulador de eventos exibirá o arquivo selecionado definindo a PictureBox.Image propriedade . O exemplo requer a existência de arquivos JPG localizados no diretório C:\documents and Settings\All Users\Documents\My Pictures\Sample Pictures. Para executar este exemplo, cole o código em um formulário e chame os InitializePictureBox métodos e PopulateListView no construtor ou Load método do formulário. Verifique se todos os eventos estão associados aos manipuladores de eventos.

C#
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);
    }
}

Comentários

O GetItemAt método permite determinar qual item está localizado em um local específico dentro da região do cliente do ListView controle. Você pode usar esse método quando o usuário clica ou clica com o botão direito do mouse em um subitem (quando a View propriedade está definida View.Detailscomo ) e deseja determinar qual item possui o subitem que foi clicado com base nas coordenadas do mouse no momento em que o usuário clicou no mouse.

Observação

Quando o valor da FullRowSelect propriedade é false, esse método retorna um item somente quando o local especificado está dentro dos limites do item pai (que é exibido na primeira coluna quando o controle está no modo de detalhes). Você deve definir a FullRowSelect propriedade como true para recuperar um item com esse método, dado um local dentro dos limites de um subitem. Você também pode usar o HitTest método para recuperar informações detalhadas sobre o item em um local específico.

Para fazer reposicionamento de itens de arrastar e soltar em um ListView, talvez você queira usar o ListViewInsertionMark.NearestIndex método em vez do GetItemAt método . O ListViewInsertionMark.NearestIndex método localiza o item mais próximo, independentemente de onde o ponteiro do mouse está localizado. O GetItemAt método, por outro lado, retornará null se não houver nenhum item no local especificado.

Observação

A ListViewInsertionMark classe só tem suporte no Windows XP e no Windows Server 2003 quando o aplicativo chama o Application.EnableVisualStyles método .

Aplica-se a

Produto Versões
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9, 10

Confira também