İ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
Sürüklemenin başlayacağı denetimde, verilerin sürüklenecek şekilde ayarlanacak ve izin verilen sürükleme etkisine sahip olacak MouseDown
DoDragDropş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 Subprivate 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
özelliğini AllowDrop true olarak ayarlayın.
Bırakmanın
DragEntermeydana 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 Subprivate 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.
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 Subprivate 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.