İzlenecek yol: Windows Forms'da Sürükle ve Bırak İşlemi Gerçekleştirme

Veri tabanlı uygulamalarda sürükle ve bırak Windows gerçekleştirmek için, özellikle , ve olayları olmak üzere bir dizi olay DragEnterDragLeave işlemeniz DragDrop gerekir. Bu olayların olay bağımsız değişkenlerde bulunan bilgilerle çalışarak sürükle ve bırak işlemlerini kolayca kolaylaştırabilirsiniz.

Verileri Sürükleme

Tüm sürükle ve bırak işlemleri sürükleme ile başlar. Sürüklenme başladığında verilerin toplanabilir şekilde tolere edilme işlevselliği yönteminde DoDragDrop uygulanır.

Aşağıdaki örnekte, en sezgisel olduğu için sürükleme işlemi başlatmak için olay kullanılmıştır (çoğu sürükleyip bırakma eylemi, fare düğmesinin MouseDown olmasıyla başlar). Ancak, sürükle ve bırak yordamı başlatmak için herhangi bir olayın kullanıldığını unutmayın.

Not

Belirli denetimlerin sürüklenen özel olayları vardır. Örneğin ListViewTreeView ve denetimlerinin bir olayı ItemDrag vardır.

Sürükleme işlemi başlatmak için

  1. Sürüklemenin başlayacağı denetimde, verilerin sürüklenecek şekilde ayarlanacak ve izin verilen sürükleme etkisine sahip olacak MouseDownDoDragDrop şekilde yöntemini kullanın. Daha fazla bilgi için Data ve AllowedEffect bölümlerine bakın.

    Aşağıdaki örnek, bir sürükleme işlemi başlatmayı gösterir. Sürüklemenin başladığı denetim bir denetimdir, sürüklenen veriler denetimin özelliğini temsil eden dizedir ve izin verilen etkiler kopyalama ButtonText veya Button taşımadır.

    Private Sub Button1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button1.MouseDown  
       Button1.DoDragDrop(Button1.Text, DragDropEffects.Copy Or DragDropEffects.Move)  
    End Sub  
    
    private void button1_MouseDown(object sender,
    System.Windows.Forms.MouseEventArgs e)  
    {  
       button1.DoDragDrop(button1.Text, DragDropEffects.Copy |
          DragDropEffects.Move);  
    }  
    

    Not

    Herhangi bir veri yönteminde parametre olarak kullanılabilir; yukarıdaki örnekte, özelliği sürüklenen DoDragDropTextButton konumla (denetim) ilişkili olduğundan denetimin özelliği (bir değeri sabit kodlamak veya bir veri kümesinden veri almak yerine) Button kullanılmıştır. Sürükle ve bırak işlemlerini kendi uygulama tabanlı uygulamalarınıza dahil Windows unutmayın.

Bir sürükleme işlemi etkin durumdayken, sistemin sürükle işlemeye devam etmek için QueryContinueDrag "izin isteyen" olayı işleysiniz. Bu yöntemi işlerken, imleç üzerine geldiğinde denetimde bir genişletme gibi sürükleme işlemi üzerinde etkisi olacak yöntemleri çağırmanız için de uygun TreeNodeTreeView bir noktadır.

Verileri Bırakma

Form veya denetim üzerinde bir konumdan Windows başladıktan sonra doğal olarak bir yere bırakmak istemeyebilirsiniz. İmleç, bir formun veya denetimin bir alanına geçerek verileri bırakmak için doğru yapılandırıldığında değişir. Bir Form veya Windows içindeki herhangi bir alan, özelliğini ayarp ve ve olaylarını işerek bırakılan verileri AllowDrop kabul etmek DragEnter için DragDrop yapılır.

Bırakma gerçekleştirmek için

  1. özelliğini AllowDrop true olarak ayarlayın.

  2. Bırakmanın DragEnter meydana gelecek olduğu denetimde sürüklenen verilerin kabul edilebilir türde (bu durumda) olduğundan emin Text olur. Kod daha sonra bırakma, numaralamada bir değere oluştuğunda gerçekleşecek DragDropEffects etkiyi ayarlar. Daha fazla bilgi için bkz. Effect.

    Private Sub TextBox1_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles TextBox1.DragEnter  
       If (e.Data.GetDataPresent(DataFormats.Text)) Then  
         e.Effect = DragDropEffects.Copy  
       Else  
         e.Effect = DragDropEffects.None  
       End If  
    End Sub  
    
    private void textBox1_DragEnter(object sender,
    System.Windows.Forms.DragEventArgs e)  
    {  
       if (e.Data.GetDataPresent(DataFormats.Text))
          e.Effect = DragDropEffects.Copy;  
       else  
          e.Effect = DragDropEffects.None;  
    }  
    

    Not

    Yönteminin parametresi DataFormats olarak kendi nesnenizi belirterek Object kendi nesnenizi SetData tanımlayabilirsiniz. Bunu yaparken belirtilen nesnenin serileştirilebilir olduğundan emin olun. Daha fazla bilgi için bkz. ISerializable.

  3. Bırakmanın DragDrop meydana gelecek olduğu denetimde sürüklenen verileri almak için yöntemini GetData kullanın. Daha fazla bilgi için bkz. Data.

    Aşağıdaki örnekte, TextBox denetimin sürüklendiği denetimdir (bırakmanın nerede meydana gelir). Kod, Text denetimin özelliğini TextBox sürüklenen verilere eşit olarak ayarlar.

    Private Sub TextBox1_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles TextBox1.DragDrop  
       TextBox1.Text = e.Data.GetData(DataFormats.Text).ToString  
    End Sub  
    
    private void textBox1_DragDrop(object sender,
    System.Windows.Forms.DragEventArgs e)  
    {  
       textBox1.Text = e.Data.GetData(DataFormats.Text).ToString();  
    }  
    

    Not

    Ayrıca, sürükle ve bırak işlemi sırasında anahtarların etkisine bağlı olarak belirli etkilerin gerçekleşmesini (örneğin, CTRL tuşuna basıldığında sürüklenen verileri kopyalamak standarttır) için özelliğiyle KeyState çalışabilirsiniz.

Ayrıca bkz.