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 gerçekleşir ve sürükle ve bırak işleminin iptal edilip edilmeyeceğini belirlemek için sürükleme kaynağını etkinleştirir.
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ının 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
Sürükle QueryContinueDrag ve bırak işlemi sırasında klavye veya fare düğmesi durumunda bir değişiklik olduğunda olay tetikleniyor. 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, DoDragDrop geçerli imleç konumunun 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 belirtilen sürükle ve bırak efektiyle 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 oluşturulur.
Fare başka bir denetime girerse, DragEnter bu denetimin değeri oluşturulur.
Fare hareket eder ancak aynı denetim içinde kalırsa, DragOver olay tetikler.
Klavye veya fare düğmesi durumunda bir değişiklik varsa, QueryContinueDrag olay oluşturulur ve sürüklemeye devam etmek, verileri bırakmak veya olayın QueryContinueDragEventArgsözelliğinin Action değerine göre işlemi iptal etmek için belirlenir.
değeri DragAction ise
ContinueDragOver, olay işleme devam etmek için oluşturulur ve GiveFeedback uygun görsel geri bildirimin ayarlanabilmesi için olay yeni etkiyle oluşturulur. Geçerli bırakma efektlerinin listesi için numaralandırmaya DragDropEffects bakın.Uyarı
DragOver ve GiveFeedback olayları eşleştirilir, böylece fare bırakma hedefi boyunca hareket ettikçe kullanıcıya farenin konumuyla ilgili en up-totarih geri bildirimi verilir.
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
CancelDragLeave, olay oluşturulur.
Varsayılan olarak, QueryContinueDrag ESC tuşuna CancelDragAction basıldığında olay olarak ayarlanır Action ve sol, orta veya sağ fare düğmesine basıldığında da içinde olarak ayarlanır ActionDropDragAction.
Olayları işleme hakkında daha fazla bilgi için bkz . Olayları İşleme ve Oluşturma.