Control.GiveFeedback Событие
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Происходит во время операции перетаскивания.
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
Тип события
Примеры
В следующем примере кода демонстрируется операция перетаскивания между двумя ListBox элементами управления. В примере вызывается DoDragDrop метод при запуске действия перетаскивания. Действие перетаскивания начинается, если мышь перемещена больше, чем SystemInformation.DragSize из расположения мыши во время MouseDown события. Метод IndexFromPoint используется для определения индекса элемента для перетаскивания во время MouseDown события.
В примере также показано использование пользовательских курсоров для операции перетаскивания. В этом примере требуется, чтобы два файла курсора и 3dwarro.cur3dwno.cur, существующие в каталоге приложения, для пользовательских курсоров перетаскивания и курсоров без перетаскивания соответственно. Настраиваемые курсоры будут использоваться UseCustomCursorsCheckCheckBox при проверке. Пользовательские курсоры задаются в обработчике GiveFeedback событий.
Состояние клавиатуры вычисляется в DragOver обработчике событий справа ListBox, чтобы определить, какая операция перетаскивания будет зависеть от состояния клавиш SHIFT, CTRL, ALT или CTRL+ALT. Расположение в месте, где ListBox будет происходить удаление, также определяется во время DragOver события. Если данные, которые нужно удалить, не Stringявляются, DragEventArgs.Effect то для нее задано NoneDragDropEffectsзначение . Наконец, в списке DropLocationLabelLabelотображается состояние удаления.
Данные, которые нужно удалить справаListBox, определяются в DragDrop обработчике событий, а String значение добавляется в соответствующее место в .ListBox Если операция перетаскивания перемещается за пределы формы, операция перетаскивания отменяется в обработчике QueryContinueDrag событий.
Этот фрагмент кода демонстрирует использование GiveFeedback события. См. DoDragDrop метод для полного примера кода.
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
Комментарии
Событие GiveFeedback возникает при запуске операции перетаскивания. GiveFeedback При использовании события источник события перетаскивания может изменить внешний вид указателя мыши, чтобы предоставить пользователю визуальный отзыв во время операции перетаскивания.
Ниже описывается, как и когда возникают события, связанные с операциями перетаскивания.
Метод DoDragDrop определяет элемент управления в текущем расположении курсора. Затем он проверяет, является ли элемент управления допустимым целевым объектом удаления.
Если элемент управления является допустимым целевым объектом удаления, GiveFeedback событие вызывается с заданным эффектом перетаскивания. Список эффектов перетаскивания см. в DragDropEffects перечислении.
Отслеживаются изменения положения курсора мыши, состояния клавиатуры и кнопки мыши.
Если пользователь выходит из окна, DragLeave событие вызывается.
Если мышь вводит другой элемент управления, DragEnter вызывается для этого элемента управления.
Если мышь перемещается, но остается в одном элементе управления, DragOver событие вызывается.
При изменении состояния QueryContinueDrag клавиатуры или кнопки мыши событие вызывается и определяет, следует ли продолжать перетаскивание данных или отменять операцию на основе значения Action свойства события QueryContinueDragEventArgs.
Если значение DragAction
Continueравно, DragOver событие вызывается для продолжения операции, и GiveFeedback событие вызывается с новым эффектом, чтобы можно было задать соответствующую визуальную обратную связь. Список допустимых эффектов удаления см. в DragDropEffects перечислении.Заметка
GiveFeedback События DragOver связаны таким образом, чтобы при перемещении мыши по целевому объекту удаления пользователь получил наиболее up-to-date отзыв о положении мыши.
Если значение DragAction
Dropравно, значение эффекта удаления возвращается источнику, поэтому исходное приложение может выполнять соответствующую операцию с исходными данными, например, вырезать данные, если операция была перемещением.Если значение DragAction равно
Cancel, DragLeave событие вызывается.
Дополнительные сведения об обработке событий см. в разделе "Обработка и создание событий".