Udostępnij za pośrednictwem


Control.GiveFeedback Zdarzenie

Definicja

Występuje podczas operacji przeciągania.

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 

Typ zdarzenia

Przykłady

W poniższym przykładzie kodu pokazano operację przeciągania i upuszczania między dwoma kontrolkami ListBox. Przykład wywołuje metodę DoDragDrop po uruchomieniu akcji przeciągania. Akcja przeciągania rozpoczyna się, jeśli mysz przeniosła się więcej niż SystemInformation.DragSize z lokalizacji myszy podczas zdarzenia MouseDown. Metoda IndexFromPoint służy do określania indeksu elementu do przeciągania podczas zdarzenia MouseDown.

W przykładzie pokazano również użycie niestandardowych kursorów dla operacji przeciągania i upuszczania. Przykład wymaga, aby dwa pliki kursorów, 3dwarro.cur i 3dwno.cur, istniały w katalogu aplikacji, odpowiednio dla niestandardowego przeciągania i bez upuszczania kursorów. Kursory niestandardowe będą używane, jeśli zaznaczono UseCustomCursorsCheckCheckBox. Kursory niestandardowe są ustawiane w procedurze obsługi zdarzeń GiveFeedback.

Stan klawiatury jest obliczany w procedurze obsługi zdarzeń DragOver dla prawego ListBox, aby określić, jaka operacja przeciągania będzie oparta na stanie SHIFT, CTRL, ALT lub CTRL+ALT. Lokalizacja w ListBox, w której występuje spadek, jest również określana podczas zdarzenia DragOver. Jeśli dane do porzucenia nie są String, DragEventArgs.Effect jest ustawiona na None w DragDropEffects. Na koniec stan upuszczania jest wyświetlany w DropLocationLabelLabel.

Dane do upuszczania odpowiedniego ListBox są określane w procedurze obsługi zdarzeń DragDrop, a wartość String jest dodawana w odpowiednim miejscu w ListBox. Jeśli operacja przeciągania przesuwa się poza granice formularza, operacja przeciągania i upuszczania zostanie anulowana w programie obsługi zdarzeń QueryContinueDrag.

Ten fragment kodu przedstawia użycie zdarzenia GiveFeedback. Zobacz metodę DoDragDrop, aby zapoznać się z kompletnym przykładem kodu.

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

Uwagi

Zdarzenie GiveFeedback jest wywoływane po uruchomieniu operacji przeciągania i upuszczania. W przypadku zdarzenia GiveFeedback źródło zdarzenia przeciągania może modyfikować wygląd wskaźnika myszy, aby przekazać użytkownikowi opinię podczas operacji przeciągania i upuszczania.

Poniżej opisano, jak i kiedy są wywoływane zdarzenia związane z operacjami przeciągania i upuszczania.

Metoda DoDragDrop określa kontrolkę w bieżącej lokalizacji kursora. Następnie sprawdza, czy kontrolka jest prawidłowym elementem docelowym upuszczania.

Jeśli kontrolka jest prawidłowym elementem docelowym upuszczania, zdarzenie GiveFeedback jest wywoływane z określonym efektem przeciągania i upuszczania. Aby uzyskać listę efektów przeciągania i upuszczania, zobacz wyliczenie DragDropEffects.

Śledzone są zmiany położenia kursora myszy, stanu klawiatury i stanu przycisku myszy.

  • Jeśli użytkownik wyjecha z okna, zostanie zgłoszone zdarzenie DragLeave.

  • Jeśli mysz wejdzie w inną kontrolkę, zostanie podniesiona DragEnter dla tej kontrolki.

  • Jeśli mysz porusza się, ale pozostaje w tej samej kontrolce, zostanie podniesione zdarzenie DragOver.

W przypadku zmiany stanu klawiatury lub przycisku myszy zdarzenie QueryContinueDrag jest wywoływane i określa, czy kontynuować przeciąganie, upuszczać dane, czy anulować operację na podstawie wartości właściwości ActionQueryContinueDragEventArgszdarzenia .

  • Jeśli wartość DragAction jest Continue, zdarzenie DragOver jest wywoływane w celu kontynuowania operacji, a zdarzenie GiveFeedback jest wywoływane z nowym efektem, dzięki czemu można ustawić odpowiednią opinię wizualną. Aby uzyskać listę prawidłowych efektów upuszczania, zobacz wyliczenie DragDropEffects.

    Nuta

    Zdarzenia DragOver i GiveFeedback są sparowane tak, aby w miarę poruszania się myszą w miejscu docelowym upuszczania użytkownik otrzymał największą up-to- datę opinii na temat położenia myszy.

  • Jeśli wartość DragAction jest Drop, wartość efektu spadku jest zwracana do źródła, aby aplikacja źródłowa mogła wykonać odpowiednią operację na danych źródłowych; na przykład wyciąć dane, jeśli operacja została przeniesiona.

  • Jeśli wartość DragAction jest Cancel, zostanie zgłoszone zdarzenie DragLeave.

Aby uzyskać więcej informacji na temat obsługi zdarzeń, zobacz Obsługa i podnoszenie zdarzeń.

Dotyczy

Zobacz też