Control.GiveFeedback Evento

Definição

Ocorre durante uma operação de arrasto.

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

Tipo de Evento

Exemplos

O exemplo de código seguinte demonstra uma operação de arrastar e largar entre dois ListBox controlos. O exemplo chama o DoDragDrop método quando a ação de arrasto começa. A ação de arrastar começa se o rato se tiver movido mais do que SystemInformation.DragSize a partir da posição do rato durante o MouseDown evento. O IndexFromPoint método é usado para determinar o índice do item a arrastar durante o MouseDown evento.

O exemplo também demonstra o uso de cursores personalizados para a operação de arrastar e largar. O exemplo exige que existam dois ficheiros cursor, 3dwarro.cur e 3dwno.cur, no diretório da aplicação, para os cursores personalizados de arrastar e sem largar, respetivamente. Os cursores personalizados serão usados se estiver UseCustomCursorsCheckCheckBox marcado. Os cursores personalizados estão definidos no GiveFeedback gestor de eventos.

O estado do teclado é avaliado no DragOver handler de eventos para a direita ListBox, para determinar qual será a operação de arrasto com base no estado das teclas SHIFT, CTRL, ALT ou CTRL+ALT. A localização ListBox onde a queda ocorreria também é determinada durante o DragOver evento. Se os dados a eliminar não forem um String, então o DragEventArgs.Effect é definido como None em DragDropEffects. Finalmente, o estado da queda é apresentado no DropLocationLabelLabelarquivo .

Os dados a deixar cair para a direita ListBox são determinados no DragDrop handler de eventos e o String valor é adicionado no local apropriado no ListBox. Se a operação de arrastar sair dos limites do formulário, então a operação de arrastar e largar é cancelada no QueryContinueDrag tratador de eventos.

Este excerto de código demonstra o uso do GiveFeedback evento. Veja o DoDragDrop método para o exemplo completo do código.

void ListDragSource_GiveFeedback( Object^ /*sender*/, System::Windows::Forms::GiveFeedbackEventArgs^ e )
{
   // Use custom cursors if the check box is checked.
   if ( UseCustomCursorsCheck->Checked )
   {
      // Sets the custom cursor based upon the effect.
      e->UseDefaultCursors = false;
      if ( (e->Effect & DragDropEffects::Move) == DragDropEffects::Move )
                  ::Cursor::Current = MyNormalCursor;
      else
                  ::Cursor::Current = MyNoDropCursor;
   }
}
private void ListDragSource_GiveFeedback(object sender, GiveFeedbackEventArgs e)
{
    // Use custom cursors if the check box is checked.
    if (UseCustomCursorsCheck.Checked)
    {
        // Sets the custom cursor based upon the effect.
        e.UseDefaultCursors = false;
        if ((e.Effect & DragDropEffects.Move) == DragDropEffects.Move)
            Cursor.Current = MyNormalCursor;
        else
            Cursor.Current = MyNoDropCursor;
    }
}
Private Sub ListDragSource_GiveFeedback(ByVal sender As Object, ByVal e As GiveFeedbackEventArgs) Handles ListDragSource.GiveFeedback
    ' Use custom cursors if the check box is checked.
    If (UseCustomCursorsCheck.Checked) Then

        ' Set the custom cursor based upon the effect.
        e.UseDefaultCursors = False
        If ((e.Effect And DragDropEffects.Move) = DragDropEffects.Move) Then
            Cursor.Current = MyNormalCursor
        Else
            Cursor.Current = MyNoDropCursor
        End If
    End If

End Sub

Observações

O GiveFeedback evento é ativado quando uma operação de arrastar e largar é iniciada. Com o GiveFeedback evento, a origem de um evento de arrastar pode modificar a aparência do ponteiro do rato para dar ao utilizador feedback visual durante uma operação de arrastar e largar.

O que se segue descreve como e quando são surgidos eventos relacionados com operações de arrastar e largar.

O DoDragDrop método determina o controlo sob a localização atual do cursor. Depois verifica se o controlo é um alvo válido para a queda.

Se o controlo for um alvo válido para largar, o GiveFeedback evento é levantado com o efeito de arrastar e largar especificado. Para uma lista de efeitos de arrastar e largar, consulte a DragDropEffects enumeração.

As alterações na posição do cursor do rato, no estado do teclado e no estado dos botões do rato são registadas.

  • Se o utilizador sair de uma janela, o DragLeave evento é elevado.

  • Se o rato introduzir outro controlo, o DragEnter para esse controlo é elevado.

  • Se o rato se mover mas permanecer dentro do mesmo controlo, o DragOver evento é elevado.

Se houver uma alteração no estado do teclado ou do rato, o QueryContinueDrag evento é ativado e determina se continua a arrastar, se se largam os dados ou se cancelam a operação com base no valor Action da propriedade do QueryContinueDragEventArgsevento .

  • Se o valor de DragAction for , o Continue evento é elevado para continuar a operação e o DragOver evento é elevado com o novo efeito para que o feedback visual adequado GiveFeedbackpossa ser estabelecido. Para uma lista de efeitos de queda válidos, consulte a DragDropEffects enumeração.

    Note

    Os DragOver eventos e GiveFeedback são emparelhados de modo que, à medida que o rato se move pelo alvo de queda, o utilizador receba o feedback de maior up-to-data sobre a posição do rato.

  • Se o valor de DragAction for Drop, o valor do efeito de queda é devolvido à fonte, para que a aplicação fonte possa realizar a operação apropriada sobre os dados fonte; por exemplo, cortar os dados se a operação for uma mudança.

  • Se o valor de DragAction for Cancel, o DragLeave evento é elevado.

Para obter mais informações sobre como manipular eventos, consulte Manipulando e gerando eventos.

Aplica-se a

Ver também