Exportar (0) Imprimir
Expandir Tudo
Este artigo foi traduzido por máquina. Coloque o ponteiro do mouse sobre as frases do artigo para ver o texto original. Mais informações.
Tradução
Original

Classe DragEventArgs

Fornece dados para o DragDrop, DragEnter, ou DragOver evento.

Namespace:  System.Windows.Forms
Assembly:  System.Windows.Forms (em System.Windows.Forms.dll)

[ComVisibleAttribute(true)]
public class DragEventArgs : EventArgs

O tipo DragEventArgs expõe os membros a seguir.

  NomeDescrição
Método públicoDragEventArgsInicializa uma nova instância da classe DragEventArgs.
Superior

  NomeDescrição
Propriedade públicaAllowedEffectObtém as operações de arrastar-e-soltar permitidas pelo originador (ou origem) do evento arrastar.
Propriedade públicaDataObtém o IDataObject que contém os dados associados a este evento.
Propriedade públicaEffectObtém ou define o efeito de soltar de destino em uma operação de arrastar-e-soltar.
Propriedade públicaKeyStateObtém o estado atual do SHIFT, CTRL e ALT chaves, bem como o estado dos botões do mouse.
Propriedade públicaXObtém a coordenada x do ponteiro do mouse, em coordenadas de tela.
Propriedade públicaYObtém a coordenada y do ponteiro do mouse, em coordenadas de tela.
Superior

  NomeDescrição
Método públicoEquals(Object) Verifica se o objeto especificado é igual ao objeto atual. (Herdado de Object.)
Método protegidoFinalize Permite um objeto tentar liberar recursos e executar outras operações de limpeza antes que ele seja recuperado pela coleta de lixo. (Herdado de Object.)
Método públicoGetHashCodeServe como a função de hash padrão. (Herdado de Object.)
Método públicoGetType Obtém o Type da instância atual. (Herdado de Object.)
Método protegidoMemberwiseCloneCria uma cópia superficial do Object atual. (Herdado de Object.)
Método públicoToStringRetorna uma string que representa o objeto atual. (Herdado de Object.)
Superior

O DragDrop evento ocorre quando o usuário conclui uma operação de arrastar-e-soltar arrastando um objeto sobre o controle e, em seguida, arrastando-o para o controle soltando o botão do mouse. O DragEnter evento ocorre quando o usuário move o ponteiro do mouse no controle ao arrastar um objeto com o mouse. O DragOver evento ocorre quando o usuário move o ponteiro do mouse sobre o controle ao arrastar um objeto com o mouse.

A DragEventArgs objeto Especifica qualquer dado associado a este evento; o estado atual do SHIFT, CTRL e ALT chaves; o local do ponteiro do mouse; e os efeitos de arrastar-e-soltar permitidos pela origem e destino do evento arrastar.

Para obter informações sobre o modelo de eventos, consulte Delegados e eventos.

O exemplo a seguir demonstra uma operação arrastar-e-soltar entre dois ListBox controles. As chamadas de exemplo do DoDragDrop método quando a ação de arrastar é iniciado. A ação de arrastar inicia se o mouse foi movido mais de SystemInformation.DragSize partir do local do mouse durante o MouseDown evento. O IndexFromPoint método é usado para determinar o índice do item para arrastar durante o MouseDown evento.

O exemplo também demonstra o uso cursores personalizados para a operação de arrastar-e-soltar. O exemplo supõe que dois arquivos cursor, 3dwarro.cur e 3dwno.cur, existe no diretório de aplicativo, para o arrastar personalizado e não-soltar cursores, respectivamente. Os cursores personalizados serão usados se o UseCustomCursorsCheckCheckBox é verificado. Os cursores personalizados são definidos na GiveFeedback manipulador de eventos.

O estado do teclado é avaliado na DragOver manipulador de eventos para a direita ListBox, para determinar qual será a operação de arrastar com base no estado das teclas SHIFT, CTRL, ALT ou CTRL + ALT. No local a ListBox onde ocorreria o soltar também é determinado durante o DragOver evento. Se os dados para soltar não não um String, em seguida, a DragEventArgs.Effect for definido como DragDropEffects.None. Finalmente, o status de drop é exibido na DropLocationLabelLabel.

Os dados para soltar para a direita ListBox é determinado no DragDrop manipulador de eventos e o String valor é adicionado no local apropriado do ListBox. Se a operação arrastar e move fora dos limites do formulário, a operação de arrastar-e-soltar foi cancelada na QueryContinueDrag manipulador de eventos.

Neste trecho de código demonstra o uso do DragEventArgs classe. Consulte o DoDragDrop método para que o exemplo de código completo.


private void ListDragTarget_DragOver(object sender, System.Windows.Forms.DragEventArgs e) 
{

    // Determine whether string data exists in the drop data. If not, then
    // the drop effect reflects that the drop cannot occur.
    if (!e.Data.GetDataPresent(typeof(System.String))) {

        e.Effect = DragDropEffects.None;
        DropLocationLabel.Text = "None - no string data.";
        return;
    }

    // Set the effect based upon the KeyState.
    if ((e.KeyState & (8+32)) == (8+32) && 
        (e.AllowedEffect & DragDropEffects.Link) == DragDropEffects.Link) {
        // KeyState 8 + 32 = CTL + ALT

        // Link drag-and-drop effect.
        e.Effect = DragDropEffects.Link;

    } else if ((e.KeyState & 32) == 32 && 
        (e.AllowedEffect & DragDropEffects.Link) == DragDropEffects.Link) {

        // ALT KeyState for link.
        e.Effect = DragDropEffects.Link;

    } else if ((e.KeyState & 4) == 4 && 
        (e.AllowedEffect & DragDropEffects.Move) == DragDropEffects.Move) {

        // SHIFT KeyState for move.
        e.Effect = DragDropEffects.Move;

    } else if ((e.KeyState & 8) == 8 && 
        (e.AllowedEffect & DragDropEffects.Copy) == DragDropEffects.Copy) {

        // CTL KeyState for copy.
        e.Effect = DragDropEffects.Copy;

    } else if ((e.AllowedEffect & DragDropEffects.Move) == DragDropEffects.Move)  {

        // By default, the drop action should be move, if allowed.
        e.Effect = DragDropEffects.Move;

    } else
        e.Effect = DragDropEffects.None;

    // Get the index of the item the mouse is below. 

    // The mouse locations are relative to the screen, so they must be 
    // converted to client coordinates.

    indexOfItemUnderMouseToDrop = 
        ListDragTarget.IndexFromPoint(ListDragTarget.PointToClient(new Point(e.X, e.Y)));

    // Updates the label text.
    if (indexOfItemUnderMouseToDrop != ListBox.NoMatches){

        DropLocationLabel.Text = "Drops before item #" + (indexOfItemUnderMouseToDrop + 1);
    } else
        DropLocationLabel.Text = "Drops at the end.";

}


O exemplo a seguir ilustra como DragEventArgs são passados entre a origem e destino de uma operação de arrastar-e-soltar. Neste exemplo, um ListBox controle é a origem dos dados e o RichTextBox o controle é o destino. O exemplo pressupõe que o ListBox controle foi preenchida com uma lista de nomes de arquivo válido. Quando o usuário arrasta um dos nomes de arquivos exibidos a ListBox controlar até o RichTextBox controle, o arquivo referenciado no nome do arquivo é aberto.

A operação é iniciada na ListBox evento MouseDown do controle. No DragEnter o manipulador de eventos, o exemplo usa a GetDataPresent método para verificar se os dados em um formato que o RichTextBox controle pode exibir e, em seguida, define o DragDropEffects propriedade para especificar que os dados deve ser copiada ao controle da fonte para o controle de destino. Finalmente, o RichTextBox usa o manipulador de eventos do controle DragDrop a GetData método para recuperar o nome do arquivo para abrir.


private void Form1_Load(object sender, EventArgs e) 
{
   // Sets the AllowDrop property so that data can be dragged onto the control.
   richTextBox1.AllowDrop = true;

   // Add code here to populate the ListBox1 with paths to text files.

}

private void listBox1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
   // Determines which item was selected.
   ListBox lb =( (ListBox)sender);
   Point pt = new Point(e.X,e.Y);
   int index = lb.IndexFromPoint(pt);

   // Starts a drag-and-drop operation with that item.
   if(index>=0) 
   {
      lb.DoDragDrop(lb.Items[index].ToString(), DragDropEffects.Link);
   }
}

private void richTextBox1_DragEnter(object sender, DragEventArgs e) 
{
   // If the data is text, copy the data to the RichTextBox control.
   if(e.Data.GetDataPresent("Text"))
      e.Effect = DragDropEffects.Copy;
}

private void richTextBox1_DragDrop(object sender, DragEventArgs e) 
{
   // Loads the file into the control. 
   richTextBox1.LoadFile((String)e.Data.GetData("Text"), System.Windows.Forms.RichTextBoxStreamType.RichText);
}



.NET Framework

Com suporte em: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Com suporte em: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Função Server Core sem suporte), Windows Server 2008 R2 (Função Server Core com suporte com o SP1 ou posterior, Itanium sem suporte)

O .NET Framework não oferece suporte a todas as versões de cada plataforma. Para obter uma lista das versões com suporte, consulte Requisitos do sistema do .NET Framework.

Qualquer estático (Shared no Visual Basic) membro público desse tipo é thread-safe. Não há garantia de que qualquer membro de instância seja thread-safe.

Contribuições da comunidade

ADICIONAR
Mostrar:
© 2014 Microsoft