Control.DragEnter Evento

Definição

Ocorre quando um objeto é arrastado para os limites do controle.

public:
 event System::Windows::Forms::DragEventHandler ^ DragEnter;
public event System.Windows.Forms.DragEventHandler DragEnter;
public event System.Windows.Forms.DragEventHandler? DragEnter;
member this.DragEnter : System.Windows.Forms.DragEventHandler 
Public Custom Event DragEnter As DragEventHandler 

Tipo de evento

Exemplos

O exemplo de código a seguir demonstra uma operação de arrastar e soltar entre dois controles ListBox. O exemplo chama o método DoDragDrop quando a ação de arrastar é iniciada. A ação de arrastar será iniciada se o mouse tiver se movido mais de SystemInformation.DragSize do local do mouse durante o evento MouseDown. O método IndexFromPoint é usado para determinar o índice do item a ser arrastado durante o evento MouseDown.

O exemplo também demonstra o uso de cursores personalizados para a operação de arrastar e soltar. O exemplo requer que dois arquivos de cursor, 3dwarro.cur e 3dwno.cur, existam no diretório do aplicativo, para os cursores de arrastar e sem soltar personalizados, respectivamente. Os cursores personalizados serão usados se o UseCustomCursorsCheckCheckBox for verificado. Os cursores personalizados são definidos no manipulador de eventos GiveFeedback.

O estado do teclado é avaliado no manipulador de eventos DragOver para a ListBoxdireita, para determinar qual operação de arrastar será baseada no estado das teclas SHIFT, CTRL, ALT ou CTRL+ALT. O local no ListBox em que a queda ocorreria também é determinado durante o evento DragOver. Se os dados a serem removidos não forem um String, o DragEventArgs.Effect será definido como None em DragDropEffects. Por fim, o status da queda é exibido no DropLocationLabelLabel.

Os dados a serem removidos para o ListBox direito são determinados no manipulador de eventos DragDrop e o valor String é adicionado no local apropriado no ListBox. Se a operação de arrastar se mover para fora dos limites do formulário, a operação de arrastar e soltar será cancelada no manipulador de eventos QueryContinueDrag.

Este trecho de código demonstra o uso do evento DragEnter. Consulte o método DoDragDrop para o exemplo de código completo.

void ListDragTarget_DragEnter( Object^ /*sender*/, System::Windows::Forms::DragEventArgs^ /*e*/ )
{
   // Reset the label text.
   DropLocationLabel->Text = "None";
}
private void ListDragTarget_DragEnter(object sender, DragEventArgs e)
{
    // Reset the label text.
    DropLocationLabel.Text = "None";
}
Private Sub ListDragTarget_DragEnter(ByVal sender As Object, ByVal e As DragEventArgs) Handles ListDragTarget.DragEnter
    ' Reset the label text.
    DropLocationLabel.Text = "None"
End Sub

Comentários

O evento DragEnter é gerado quando o usuário arrasta pela primeira vez o cursor do mouse sobre o controle durante uma operação de arrastar e soltar.

Nota

Em versões anteriores ao .NET Framework 2.0, se você colocar um UserControl com eventos de DragEnter e DragDrop em um Formulário do Windows e arrastar e soltar algo no UserControl em tempo de design, os eventos DropDrop e DropEnter serão gerados. No entanto, quando você fecha e reabre a solução, os eventos DragEnter e DragDrop não são gerados novamente.

A seguir, descreve como e quando eventos relacionados a operações de arrastar e soltar são gerados.

O método DoDragDrop determina o controle no local atual do cursor. Em seguida, verifica se o controle é um destino suspenso válido.

Se o controle for um destino suspenso válido, o evento GiveFeedback será gerado com o efeito de arrastar e soltar especificado. Para obter uma lista de efeitos de arrastar e soltar, consulte a enumeração DragDropEffects.

As alterações na posição do cursor do mouse, no estado do teclado e no estado do botão do mouse são controladas.

  • Se o usuário sair de uma janela, o evento DragLeave será gerado.

  • Se o mouse entrar em outro controle, o DragEnter desse controle será gerado.

  • Se o mouse se mover, mas permanecer dentro do mesmo controle, o evento DragOver será gerado.

Se houver uma alteração no estado do teclado ou do botão do mouse, o evento QueryContinueDrag será acionado e determinará se deseja continuar a arrastar, remover os dados ou cancelar a operação com base no valor da propriedade Action do QueryContinueDragEventArgsdo evento.

  • Se o valor de DragAction for Continue, o evento DragOver será gerado para continuar a operação e o evento GiveFeedback será gerado com o novo efeito para que os comentários visuais apropriados possam ser definidos. Para obter uma lista de efeitos suspensos válidos, consulte a enumeração DragDropEffects.

    Nota

    Os eventos DragOver e GiveFeedback são emparelhados para que, à medida que o mouse se move pelo destino suspenso, o usuário recebe os comentários mais up-to-date sobre a posição do mouse.

  • Se o valor de DragAction for Drop, o valor do efeito de queda será retornado para a origem, para que o aplicativo de origem possa executar a operação apropriada nos dados de origem; por exemplo, corte os dados se a operação for uma movimentação.

  • Se o valor de DragAction for Cancel, o evento DragLeave será gerado.

    Nota

    As propriedades X e Y do DragEventArgs estão em coordenadas de tela, não em coordenadas do cliente. A linha a seguir do código do Visual C# converte as propriedades em um cliente Point.

    Point clientPoint = targetControl.PointToClient(new Point(de.X, de.Y));
    

Para obter mais informações sobre como lidar com eventos, consulte manipulação e geração de eventos.

Aplica-se a

Confira também