Control.GiveFeedback Evento
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Ocorre durante uma operação de arrastar.
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 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 UseCustomCursorsCheck
CheckBox 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 ListBox
direita, 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 DropLocationLabel
Label.
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 GiveFeedback. Consulte o método DoDragDrop para o exemplo de código completo.
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
Comentários
O evento GiveFeedback é gerado quando uma operação de arrastar e soltar é iniciada. Com o evento GiveFeedback, a origem de um evento de arrastar pode modificar a aparência do ponteiro do mouse para fornecer ao usuário comentários visuais durante uma operação de arrastar e soltar.
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.
Para obter mais informações sobre como lidar com eventos, consulte manipulação e geração de eventos.