VB.NET Uygulamalarında Drag & Drop Kullanımı

VB.NET Uygulamalarında Drag & Drop Kullanımı Merhabalar Bu makale’mde sizinle gerçekleştirdiğimiz uygulamalarda özellikle başlangıç seviyesi bilgisayar kullanıcıları için yazılımlarımızın daha rahat kullanılmasında önemli bir rol oynadığını düşündüğüm Drag & Drop Türkçe adı ile Sürükle & Bırak işlemini paylaşmak istiyorum. Drag & Drop’un ne olduğu hakkında size biraz bahsedecek olursam. Kısaca Drag & Drop yani Sürükle ve Bırak’ı bir nesne"nin içindeki veriyi alıp içeriği uygun başka bir nesneye taşımak olarak özetleyebiliriz. Drag & Drop olay"ının algoritmasını inceleyecek olursak. Drag & Drop olayını Şekil 1.A’daki gibi gösterebiliriz. Şekil 1.A Şimdi’de Şekil 1.A’da gösterdiğim şema’daki algoritmik yapıyı bir program üzerinde uygulamalı olarak göstermeye çalışarak konuyu pekiştirelim. Size bu makalemizde gerçekleştireceğimiz programın özelliklerinden ve işlevinden biraz bahsetmek istiyorum. Konuyu daha hızlı ve detaylı kavrayabilmeniz için programın işlevini “Bir süper market’teki meyve reyonunda bulunan meyve çeşitlerinden ihtiyacımız olanları sepetimize atmak gibi düşünmenizi önemle tavsiye ediyorum. Formumuza Bir süper market’in meyve reyonunu ve elimizde taşıdığımız alışveriş sepetimizi simule etmek için iki adet ListBox kontrol’ü ekliyorum. Şimdi ListBox1 kontrolündeki bir objeyi ListBox2 ye sürükleyip bırakarak ListBox2 içine aktarılmasını sağlayacağız. Tekrar hikâyesel bazda kurgulayacak olursam. Programımız aracılığıyla reyondan bir meyveyi alıp sepetimiz içine bırakıyor olacağız. Şekil 1. B İlk olarak ListBox1’deki bir obje’yi seçebilmek için ListBox1’in MouseDown olayını kullanıyor olacağız. Yeni başlayan arkadaşların konuyu daha iyi anlayabilmesi için örnekleyerek açıklayacak olursam. Reyon’dan ilk meyve’yi alırken seçtiğimiz meyve üzerinde uygulayacağımız işlemi bu kısımda tanımlıyor olacağız. Private Sub ListBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListBox1.MouseDown nokta = New Point(e.X, e.Y) indis = ListBox1.IndexFromPoint(nokta) If indis = -1 Then MsgBox("Lütfen 1 içerik seçiniz!") ListBox1.AllowDrop = True If e.Button = Windows.Forms.MouseButtons.Left Then ListBox1.DoDragDrop(ListBox1.Items(indis), DragDropEffects.All) End Sub Şimdi ListBox1’in MouseDown olayı içine yazdığımız bu kodları adım adım inceleyerek açıklayalım. Öncelikle Point sınıfından bir nesne oluşturarak ListBox1 nesnemiz içinde tıkladığımız noktanın koordinat bilgilerini nokta içine aktarıyoruz. Bir sonraki adımda ise ListBox1 kontrolümüzün IndexFromPoint metodundan faydalanarak bu koordinatlarda hangi verinin yer aldığını indisini kontrol ederek integer tipli indis değişkenimiz içine atıyoruz. Bir sonraki adımda kullanıcımızın ListBox1 kontrol’ümüz içinde boş bir alani tiklamasini engellemek için bir hata kontrol’ü ve uyarısı olarak kod kümemiz içine If indis = -1 Then MsgBox("Lütfen 1 içerik seçiniz!") kodunu ekliyoruz. Bir sonraki ve benim için en önemli yer olan ListBox1.AllowDrop = True komutunu ekliyor yada ListBox1 kontrölünün Properties Ekranın’dan AllowDrop seçeneğini True olarak seçiyoruzki meyvemizi reyon’dan alıp sepetimize atmak için önümüzde bir engel olmasın. Örnekleyecek olursam AllowDrop özelliğimizi reyon’daki meyveler üzerinde bulunan bir kapaklı cam olarak düşünebiliriz. Eğer değerimiz False ise reyon üzerindeki cam kapalı olur ve meyvemizi reyon’dan alamayız. Meyvelerimizi alıp sepetimize atmak için bu cam’ın açık yani True olması gerekmektedir. Artık ListBox1 kontrölümüz yani Meyve Reyonu ile işimiz bitti diyebiliriz. Artık point ve indis değişkenlerimiz aracılığıyla tuttuğumuz obje’mizi ListBox2 kontrölümüz içine taşımaya yani Reyon’dan almış olup elimizde tuttuğumuz meyvelerimizi sepetimize bırakmaya geldi sıra. Fakat üst’te bahsettiğimiz AllowDrop durumu ListBox2 kontrölümüz içinde geçerli Sepetimizin kapaklı bir sepet olduğunu ve bu kapağı açmamız gerektiğini düşünelim ve ListBox2.AllowDrop özelliğini True yapalım. Artık sepetemizin kapağı açık ve içine leziz mi leziz meyvelerin atılmasını bekliyor. Elimizde‘de tuttuğumuz meyveleri sepetimize yani değişkenlerimizde tuttuğumuz bilgileri ListBox2 kontrölümüz içine birakmak için ListBox2 kontrölümüzün DragOver olayını kullanacağız. ListBox2 olayımızın DragOver olayini aşağıdaki gibi düzenliyoruz. Private Sub ListBox2_DragOver(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles ListBox2.DragOver If e.KeyState = 1 Then e.Effect = DragDropEffects.All End Sub Burada KeyState parametresi ile mouse ve klavyede o an hangi tuşa bastığımızı gözlemliyoruz. KeyState parametresini değer olarak “1” yani Mouse"un sol tuşuna basılıyor ise Drop işlemini gerçekleştirmesini sağlıyoruz. Evet yavaş yavaş sona gelirken son adım olarak. ListBox2 içine objemizi eklemek için ListBox2.Items.Add(e.Data.GetData(DataFormats.Text)) ve ListBox1’den taşıdığımız veriyi silmek için ListBox2.Items.Remove(e.Data.GetData(DataFormats.Text)) kod satirlarini ekliyoruz. Artık kasa’ya gidip sepetimiz içindeki ürünleri ödeyip afiyetle yemek kalıyor bizlere. Sevgili arkadaş’lar her güzel şey gibi bu yazımında sonuna gelmiş bulunuyorum. Kısaca sizlere Drag&Drop olayından bahsetmek istedim. Umarım sizler için eğitici ve öğretici bir yazı olmuştur.

Döküman Arama

Başlık :

Kapat