Вы находитесь на странице: 1из 4

Passo a passo: executar uma

operação do tipo "arrastar e soltar"


no Windows Forms
 29/03/2017
 3 minutos para ler

o

Para executar operações de arrastar e soltar em aplicativos baseados no


Windows, você deve lidar com uma série de eventos, principalmente
os DragEntereventos DragLeave, e DragDrop . Trabalhando com as informações
disponíveis no evento argumentos desses eventos, você pode facilmente
orientar as operações do tipo "arrastar e soltar".

Arrastando dados
Todas as operações do tipo "arrastar e soltar" começam com arrastar. A
funcionalidade para habilitar os dados a serem coletados ao arrastar iniciar é
implementada no DoDragDrop método.

No exemplo a seguir, o MouseDown evento é usado para iniciar a operação de


arrastar porque ela é a mais intuitiva (a maioria das ações de arrastar e soltar
começa com o botão do mouse que está sendo pressionado). No entanto,
lembre-se de que qualquer evento pode ser usado para iniciar um
procedimento do tipo "arrastar e soltar".

Observação

Determinados controles têm eventos específicos de arrastar


personalizados. Os ListView controles TreeView e, por exemplo, têm
um ItemDrag evento.

Para iniciar uma operação de arrastar

1. No evento para o controle em que o arrastar será iniciado, use


o DoDragDrop método para definir os dados a serem arrastados e o efeito
permitido ao arrastar terá. MouseDown Para obter mais informações,
consulte Data e AllowedEffect.

O exemplo a seguir mostra como iniciar uma operação de arrastar. O


controle em que o arrastar começa é Button um controle, os dados que
estão sendo arrastados são Text a cadeia de Button caracteres que
representa a propriedade do controle e os efeitos permitidos estão sendo
copiados ou movidos.

C#Copiar
private void button1_MouseDown(object sender,
System.Windows.Forms.MouseEventArgs e)
{
button1.DoDragDrop(button1.Text, DragDropEffects.Copy |
DragDropEffects.Move);
}
Observação

Todos os dados podem ser usados como um parâmetro


no DoDragDrop método; no exemplo acima, a Text Propriedade
do Button controle foi usada (em vez de embutir em código um valor ou
recuperar dados de um DataSet) porque a propriedade estava relacionada
ao local que está sendo arrastado Button (o controle). Lembre-se disso ao
incorporar operações do tipo "arrastar e soltar" em seus aplicativos
baseados em Windows.

Embora uma operação de arrastar esteja em vigor, você pode


manipular QueryContinueDrag o evento, que "pede permissão" do sistema para
continuar a operação de arrastar. Ao lidar com esse método, também é o ponto
apropriado para você chamar métodos que terão um efeito na operação de
arrastar, como expandir um TreeNode em um TreeView controle quando o
cursor passar sobre ele.

Descartando dados
Depois de começar a arrastar dados de um local em um Formulário ou controle
do Windows, você naturalmente desejará soltá-los em algum lugar. O cursor
mudará ao cruzar uma área de um formulário ou controle que esteja
configurado corretamente para receber os dados soltados. Qualquer área
dentro de um formulário ou controle do Windows pode ser feita para aceitar
dados eliminados AllowDrop definindo a propriedade e DragEnter manipulando
os eventos e DragDrop .

Para executar uma operação de soltar


1. Defina a AllowDrop Propriedade como true.
2. No caso do controle onde o descarte ocorrerá, verifique se os dados que
estão sendo arrastados são de um tipo aceitável (nesse
caso, Text). DragEnter Em seguida, o código define o efeito que ocorrerá
quando a ação de soltar ocorrer em DragDropEffects um valor na
enumeração. Para obter mais informações, consulte Effect.

C#Copiar
private void textBox1_DragEnter(object sender,
System.Windows.Forms.DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.Text))
e.Effect = DragDropEffects.Copy;
else
e.Effect = DragDropEffects.None;
}
Observação

Você pode definir seu próprio DataFormats especificando seu próprio


objeto como o Object parâmetro do SetData método. Ao fazer isso,
verifique se o objeto especificado é serializável. Para obter mais
informações, consulte ISerializable.

3. No caso do controle em que o drop ocorrerá, use o GetData método para


recuperar os dados que estão sendo arrastados. DragDrop Para obter mais
informações, consulte Data.

No exemplo a seguir, um TextBox controle é o controle que está sendo


arrastado para (onde o descarte ocorrerá). O código define
a Text propriedade TextBox do controle igual aos dados que estão sendo
arrastados.

C#Copiar
private void textBox1_DragDrop(object sender,
System.Windows.Forms.DragEventArgs e)
{
textBox1.Text = e.Data.GetData(DataFormats.Text).ToString();
}
Observação

Além disso, você pode trabalhar com KeyState a propriedade, de modo


que, dependendo das chaves pressionadas durante a operação de arrastar
e soltar, certos efeitos ocorram (por exemplo, é padrão para copiar os
dados arrastados quando a tecla CTRL é pressionada).
Fonte: https://docs.microsoft.com/pt-
br/dotnet/framework/winforms/advanced/walkthrough-performing-a-drag-and-drop-
operation-in-windows-forms

Вам также может понравиться