Control.QueryContinueDrag Olay
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Sürükle ve bırak işlemi sırasında oluşur ve sürükleme kaynağının, sürükle ve bırak işleminin iptal edilip edilmeyeceğini belirlemesine olanak tanır.
public:
event System::Windows::Forms::QueryContinueDragEventHandler ^ QueryContinueDrag;
public event System.Windows.Forms.QueryContinueDragEventHandler QueryContinueDrag;
public event System.Windows.Forms.QueryContinueDragEventHandler? QueryContinueDrag;
member this.QueryContinueDrag : System.Windows.Forms.QueryContinueDragEventHandler
Public Custom Event QueryContinueDrag As QueryContinueDragEventHandler
Olay Türü
Örnekler
Bu kod alıntısı, sürükleme işlemi formun QueryContinueDrag sınırları dışına taşınırsa sürükle ve bırak işlemini iptal etmek için olayının kullanılmasını gösterir. DoDragDrop Tam kod örneği için yöntemine bakın.
void ListDragSource_QueryContinueDrag( Object^ sender, System::Windows::Forms::QueryContinueDragEventArgs^ e )
{
// Cancel the drag if the mouse moves off the form.
ListBox^ lb = dynamic_cast<ListBox^>(sender);
if ( lb != nullptr )
{
Form^ f = lb->FindForm();
// Cancel the drag if the mouse moves off the form. The screenOffset
// takes into account any desktop bands that may be at the top or left
// side of the screen.
if ( ((Control::MousePosition.X - screenOffset.X) < f->DesktopBounds.Left) || ((Control::MousePosition.X - screenOffset.X) > f->DesktopBounds.Right) || ((Control::MousePosition.Y - screenOffset.Y) < f->DesktopBounds.Top) || ((Control::MousePosition.Y - screenOffset.Y) > f->DesktopBounds.Bottom) )
{
e->Action = DragAction::Cancel;
}
}
}
private void ListDragSource_QueryContinueDrag(object sender, QueryContinueDragEventArgs e)
{
// Cancel the drag if the mouse moves off the form.
ListBox lb = sender as ListBox;
if (lb != null)
{
Form f = lb.FindForm();
// Cancel the drag if the mouse moves off the form. The screenOffset
// takes into account any desktop bands that may be at the top or left
// side of the screen.
if (((Control.MousePosition.X - screenOffset.X) < f.DesktopBounds.Left) ||
((Control.MousePosition.X - screenOffset.X) > f.DesktopBounds.Right) ||
((Control.MousePosition.Y - screenOffset.Y) < f.DesktopBounds.Top) ||
((Control.MousePosition.Y - screenOffset.Y) > f.DesktopBounds.Bottom))
{
e.Action = DragAction.Cancel;
}
}
}
Private Sub ListDragSource_QueryContinueDrag(ByVal sender As Object, ByVal e As QueryContinueDragEventArgs) Handles ListDragSource.QueryContinueDrag
' Cancel the drag if the mouse moves off the form.
Dim lb As ListBox = CType(sender, ListBox)
If (lb IsNot Nothing) Then
Dim f As Form = lb.FindForm()
' Cancel the drag if the mouse moves off the form. The screenOffset
' takes into account any desktop bands that may be at the top or left
' side of the screen.
If (((Control.MousePosition.X - screenOffset.X) < f.DesktopBounds.Left) Or
((Control.MousePosition.X - screenOffset.X) > f.DesktopBounds.Right) Or
((Control.MousePosition.Y - screenOffset.Y) < f.DesktopBounds.Top) Or
((Control.MousePosition.Y - screenOffset.Y) > f.DesktopBounds.Bottom)) Then
e.Action = DragAction.Cancel
End If
End If
End Sub
Açıklamalar
Olay QueryContinueDrag , sürükle ve bırak işlemi sırasında klavye veya fare düğmesi durumunda bir değişiklik olduğunda tetikler. Olay QueryContinueDrag , sürükle ve bırak işleminin iptal edilip edilmeyeceğini saptamak için sürükleme kaynağını etkinleştirir.
Aşağıda, sürükle ve bırak işlemleriyle ilgili olayların nasıl ve ne zaman tetiklediği açıklanmaktadır.
yöntemi geçerli DoDragDrop imleç konumu altındaki denetimi belirler. Ardından denetimin geçerli bir bırakma hedefi olup olmadığını denetler.
Denetim geçerli bir bırakma hedefiyse, GiveFeedback olay sürükle ve bırak efekti belirtilen şekilde oluşturulur. Sürükle ve bırak efektlerinin listesi için numaralandırmaya DragDropEffects bakın.
Fare imleci konumu, klavye durumu ve fare düğmesi durumundaki değişiklikler izlenir.
Kullanıcı bir pencereden dışarı taşınırsa, DragLeave olay tetikler.
Fare başka bir denetime girerse, DragEnter bu denetimin değeri yükseltilir.
Fare hareket eder ancak aynı denetimde kalırsa, DragOver olay tetikler.
Klavye veya fare düğmesi durumunda bir değişiklik olursa, QueryContinueDrag olay oluşturulur ve sürüklemeye devam edileceğini, verileri bırakılıp bırakılmayacağını veya olayın QueryContinueDragEventArgsözelliğinin Action değerine göre işlemi iptal edip etmeyeceğini belirler.
değeri DragAction ise
Continue
DragOver, işlemi devam etmek için olay oluşturulur ve uygun görsel geri bildirimin ayarlanabilmesi GiveFeedback için olay yeni efektle oluşturulur. Geçerli bırakma efektlerinin listesi için numaralandırmaya DragDropEffects bakın.Not
DragOver ve GiveFeedback olayları, fare bırakma hedefi boyunca hareket ettikçe kullanıcıya farenin konumuyla ilgili en güncel geri bildirim verilecek şekilde eşleştirilir.
değeri DragAction ise
Drop
, bırakma efekti değeri kaynağa döndürülür, böylece kaynak uygulama kaynak verilerde uygun işlemi gerçekleştirebilir; örneğin, işlem bir taşıma işlemiyse verileri kesin.değeri DragAction ise
Cancel
DragLeave, olay oluşturulur.
Varsayılan olarak, QueryContinueDrag ESC tuşuna Cancel
DragAction basıldıysa olay olarak ayarlanır Action ve sol, orta veya sağ fare düğmesine basıldığında içinde DragAction olarak ayarlanır ActionDrop
.
Olayları işleme hakkında daha fazla bilgi için bkz. Olayları İşleme ve Oluşturma.