Aracılığıyla paylaş


Sürükle ve bırak fare davranışına genel bakış (Windows Forms .NET)

Windows Forms sürükle ve bırak davranışını uygulayan bir dizi yöntem, olay ve sınıf içerir. Bu konu, Windows Forms'da sürükle ve bırak desteğine genel bir bakış sağlar.

Önemli

.NET 7 ve .NET 6 için Masaüstü Kılavuzu belgeleri yapım aşamasındadır.

Olayları sürükleyip bırakma

Sürükle ve bırak işleminde iki olay kategorisi vardır: sürükle ve bırak işleminin geçerli hedefinde gerçekleşen olaylar ve sürükle ve bırak işleminin kaynağında gerçekleşen olaylar. Sürükle ve bırak işlemlerini gerçekleştirmek için bu olayları işlemeniz gerekir. Bu olayların olay bağımsız değişkenlerinde bulunan bilgilerle çalışarak sürükle ve bırak işlemlerini kolayca kolaylaştırabilirsiniz.

Geçerli bırakma hedefinde olaylar

Aşağıdaki tabloda, sürükle ve bırak işleminin geçerli hedefinde gerçekleşen olaylar gösterilmektedir.

Fare Olayı Tanım
DragEnter Bu olay, bir nesne denetimin sınırlarına sürüklendiğinde gerçekleşir. Bu olayın işleyicisi türünde DragEventArgsbir bağımsız değişken alır.
DragOver Bu olay, fare işaretçisi denetimin sınırları içindeyken bir nesne sürüklendiğinde gerçekleşir. Bu olayın işleyicisi türünde DragEventArgsbir bağımsız değişken alır.
DragDrop Bu olay, sürükle ve bırak işlemi tamamlandığında gerçekleşir. Bu olayın işleyicisi türünde DragEventArgsbir bağımsız değişken alır.
DragLeave Bu olay, bir nesne denetimin sınırları dışına sürüklendiğinde gerçekleşir. Bu olayın işleyicisi türünde EventArgsbir bağımsız değişken alır.

DragEventArgs sınıfı, fare işaretçisinin konumunu, fare düğmelerinin geçerli durumunu ve klavyenin değiştirici tuşlarını, sürüklenen verileri ve DragDropEffects sürükleme olayının kaynağı tarafından izin verilen işlemleri ve işlem için hedef bırakma efektini belirten değerleri sağlar.

Bırakma kaynağındaki olaylar

Aşağıdaki tabloda, sürükle ve bırak işleminin kaynağında gerçekleşen olaylar gösterilmektedir.

Fare Olayı Tanım
GiveFeedback Bu olay bir sürükleme işlemi sırasında gerçekleşir. Kullanıcıya sürükle ve bırak işleminin gerçekleştiğine dair fare işaretçisini değiştirme gibi görsel bir ipucu verme fırsatı sağlar. Bu olayın işleyicisi türünde GiveFeedbackEventArgsbir bağımsız değişken alır.
QueryContinueDrag Bu olay sürükle ve bırak işlemi sırasında oluşturulur ve sürükle ve bırak işleminin iptal edilip edilmeyeceğini saptamak için sürükleme kaynağını etkinleştirir. Bu olayın işleyicisi türünde QueryContinueDragEventArgsbir bağımsız değişken alır.

sınıfı QueryContinueDragEventArgs , fare düğmelerinin ve klavyenin değiştirici tuşlarının geçerli durumunu, ESC tuşuna basılıp basılmadığını belirten bir değer ve sürükleyip bırakma işleminin devam edip etmeyeceğini belirtmek için ayarlanabilen bir DragAction değer sağlar.

Sürükle ve bırak işlemi gerçekleştirme

Sürükle ve bırak işlemleri her zaman iki bileşenden oluşur: sürükleme kaynağı ve bırakma hedefi. Sürükleyip bırakma işlemi başlatmak için kaynak olarak bir denetim belirleyin ve olayı işleyebilirsiniz MouseDown . Olay işleyicisinde, bırakma ve değerle DragDropEffects ilişkili verileri sağlayan yöntemini çağırınDoDragDrop.

Bu denetimin AllowDrop sürükleyip bırakma işlemini kabul edebilmesi için hedef denetimin özelliğini olarak ayarlayın true . Hedef iki olayı işler; önce sürüklemenin denetimin üzerinde olmasına yanıt olarak bir olay, örneğin DragOver. Ve bırakma eyleminin kendisi olan ikinci bir olay, DragDrop.

Aşağıdaki örnekte bir denetimden Label öğesine sürüklenme gösterilmektedir TextBox. Sürükleme tamamlandığında, TextBox etiket metnini kendisine atayarak yanıt verir.

// Initiate the drag
private void label1_MouseDown(object sender, MouseEventArgs e) =>
    DoDragDrop(((Label)sender).Text, DragDropEffects.All);

// Set the effect filter and allow the drop on this control
private void textBox1_DragOver(object sender, DragEventArgs e) =>
    e.Effect = DragDropEffects.All;

// React to the drop on this control
private void textBox1_DragDrop(object sender, DragEventArgs e) =>
    textBox1.Text = (string)e.Data.GetData(typeof(string));
' Initiate the drag
Private Sub Label1_MouseDown(sender As Object, e As MouseEventArgs)
    DoDragDrop(DirectCast(sender, Label).Text, DragDropEffects.All)
End Sub

' Set the effect filter and allow the drop on this control
Private Sub TextBox1_DragOver(sender As Object, e As DragEventArgs)
    e.Effect = DragDropEffects.All
End Sub

' React to the drop on this control
Private Sub TextBox1_DragDrop(sender As Object, e As DragEventArgs)
    TextBox1.Text = e.Data.GetData(GetType(String))
End Sub

Sürükleme efektleri hakkında daha fazla bilgi için bkz Data . ve AllowedEffect.

Ayrıca bkz.