Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O Windows Forms inclui um conjunto de métodos, eventos e classes que implementam o comportamento de arrastar e soltar. Este artigo fornece uma visão geral do suporte de arrastar e soltar no Windows Forms.
Eventos de arrastar e soltar
Há duas categorias de eventos em uma operação de arrastar e soltar: eventos que ocorrem no destino atual da operação de arrastar e soltar e eventos que ocorrem na origem da operação de arrastar e soltar. Para executar operações de arrastar e soltar, é necessário manipular esses eventos. Trabalhando com as informações disponíveis no evento argumentos desses eventos, você pode facilmente orientar as operações do tipo "arrastar e soltar".
Eventos no destino de soltar atual
A tabela a seguir mostra os eventos que ocorrem no destino atual de uma operação do tipo "arrastar e soltar".
Evento de mouse | Descrição |
---|---|
DragEnter | Esse evento ocorre quando um objeto é arrastado para os limites do controle. O manipulador desse evento recebe um argumento do tipo DragEventArgs. |
DragOver | Esse evento ocorre quando um objeto é arrastado enquanto o ponteiro do mouse está dentro dos limites do controle. O manipulador desse evento recebe um argumento do tipo DragEventArgs. |
DragDrop | Esse evento ocorre quando uma operação de arrastar e soltar é concluída. O manipulador desse evento recebe um argumento do tipo DragEventArgs. |
DragLeave | Esse evento ocorre quando um objeto é arrastado para fora dos limites do controle. O manipulador desse evento recebe um argumento do tipo EventArgs. |
A classe DragEventArgs fornece o local do ponteiro do mouse, o estado atual dos botões do mouse, as teclas modificadoras do teclado, os dados que estão sendo arrastados e os valores de DragDropEffects que especificam as operações permitidas pela fonte do evento de arrastar e o efeito de soltar no destino para a operação.
Eventos na origem de soltar
A tabela a seguir mostra os eventos que ocorrem na origem da operação de arrastar e soltar.
Evento de mouse | Descrição |
---|---|
GiveFeedback | Esse evento ocorre durante operação de arraste. Ele oferece uma oportunidade de dar uma indicação visual ao usuário de que a operação de arrastar e soltar está ocorrendo, como alterar o ponteiro do mouse. O manipulador desse evento recebe um argumento do tipo GiveFeedbackEventArgs. |
QueryContinueDrag | Esse evento é gerado durante uma operação do tipo "arrastar e soltar" e permite que a fonte de arrastar determine se a operação do tipo "arrastar e soltar" deve ser cancelada. O manipulador desse evento recebe um argumento do tipo QueryContinueDragEventArgs. |
A classe QueryContinueDragEventArgs fornece o estado atual dos botões do mouse e das teclas modificadoras do teclado, um valor que especifica se a tecla ESC foi pressionada e um valor DragAction que pode ser definido para especificar se a operação de arrastar e soltar deve continuar.
Realizando arrastar e soltar
As operações de arrastar e soltar sempre envolvem dois componentes, a origem de arrastar e o destino de soltar. Para iniciar uma operação de arrastar e soltar, designe um controle como a origem e manipule o evento MouseDown. No manipulador de eventos, chame o método DoDragDrop fornecendo os dados associados ao soltar e um valor DragDropEffects.
Defina a propriedade AllowDrop do controle de destino definida como true
para permitir que esse controle aceite uma operação de arrastar e soltar. O destino manipula dois eventos, primeiro um evento em resposta à ação de arrastar que está sobre o controle, como DragOver. E um segundo evento que é a ação de soltar em si, DragDrop.
O exemplo a seguir demonstra uma operação de arrastar e soltar de um Label controle para um TextBox. Quando a operação é concluída, TextBox
responde atribuindo o texto do rótulo a si próprio.
// Initiate the drag
private void label1_MouseDown(object sender, MouseEventArgs e) =>
DoDragDrop(((Label)sender).Text, DragDropEffects.All);
// Set the effect filter and allow the drop on this control
private void textBox1_DragOver(object sender, DragEventArgs e) =>
e.Effect = DragDropEffects.All;
// React to the drop on this control
private void textBox1_DragDrop(object sender, DragEventArgs e) =>
textBox1.Text = (string)e.Data.GetData(typeof(string));
' Initiate the drag
Private Sub Label1_MouseDown(sender As Object, e As MouseEventArgs)
DoDragDrop(DirectCast(sender, Label).Text, DragDropEffects.All)
End Sub
' Set the effect filter and allow the drop on this control
Private Sub TextBox1_DragOver(sender As Object, e As DragEventArgs)
e.Effect = DragDropEffects.All
End Sub
' React to the drop on this control
Private Sub TextBox1_DragDrop(sender As Object, e As DragEventArgs)
TextBox1.Text = e.Data.GetData(GetType(String))
End Sub
Para obter mais informações sobre os efeitos de arrastar, confira Data e AllowedEffect.
Consulte também
.NET Desktop feedback