Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Windows Forms sürükle ve bırak davranışını uygulayan bir dizi yöntem, olay ve sınıf içerir. Bu makalede, Windows Forms'da sürükle ve bırak desteğine genel bir bakış sağlanır.
Sürükle ve bırak etkinlikleri
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 hedefindeki olaylar
Aşağıdaki tabloda, sürükle ve bırak işleminin geçerli hedefinde gerçekleşen olaylar gösterilmektedir.
Fare Etkinliği | Açıklama |
---|---|
DragEnter | Bu olay, bir nesne denetimin sınırlarına sürüklendiğinde gerçekleşir. Bu olayın işleyicisi DragEventArgstüründe bir 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 DragEventArgstüründe bir 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 DragEventArgstüründe bir 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 EventArgstüründe bir 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 sürükleme olayının kaynağı tarafından izin verilen işlemleri ve işlemin hedef bırakma efektini belirten DragDropEffects 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 Etkinliği | Açıklama |
---|---|
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 GiveFeedbackEventArgstüründe bir 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 QueryContinueDragEventArgstüründe bir bağımsız değişken alır. |
QueryContinueDragEventArgs sınıfı, 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ğeri 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şen içerir: 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 MouseDown olayını işleyin. Olay işleyicisinde, bırakma ile ilişkili verileri ve bir DoDragDrop değerini sağlayarak DragDropEffects yöntemini çağırın.
Bu denetimin sürükle ve bırak işlemini kabul edebilmesi için hedef denetimin AllowDrop özelliğini true
olarak ayarlayın. Hedef, iki olayı işler; bunlardan ilki, sürüklemenin kontrolün üzerinde olmasına yanıt olarak gerçekleşen bir olaydır, örneğin DragOvergibi. Bırakma işleminin kendisi olan ikinci bir olay ise DragDrop.
Aşağıdaki örnek, bir Label denetiminden bir TextBox öğesine sürükle ve bırak işlemini göstermektedir. İşlem 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 bakınız
.NET Desktop feedback