Makale Özeti

Merhabalar bu makalemizde, windows uygulamasında sürükle bırak (drag drop) işlemi ile ilgili küçük bir uygulama geliştireceğiz.

Makale

Merhabalar bu makalemizde, windows uygulamasında sürükle bırak (drag drop) işlemi ile ilgili küçük bir uygulama geliştireceğiz.

Günümüzdeki bir çok programa artık sürükle bırak ile yeni bir dosya açabiliyor ve işlemleri gerçekleştiribiliyoruz. En basit haliyle örnek vermek gerekirse, not defteri uygulaması açık iken, başka bir txt dosyasını uygulamanın üzerine sürükleyip bıraktığımız zaman, otomatikmen sürüklediğimiz txt dosyasının içindeki yazılar açılır.

Gerek görsellik gerekse kullanım kolaylığı açısından sürükle bırak yöntemi gerçekten kullanıcılar açısından büyük bir avantaj teşkil eder.

Uygulamayı adım adım yapmaya başlamadan önce, proje çalışmamızı hazır hale getirelim.

Öncelikle yeni bir windows uygulama projesi açalım.

açılan formumuza, Toolbox'tan; PictureBox, ListView ve ImageList kontrol nesneleri ekleyelim.

Uygulamamızın çalışma mantığını kısaca anlatmam gerekirse, Uygulamamıza dışardan topluca resimleri seçip ListView kontrolünün üzerine sürükleyip bıraktığımız zaman, ListView üzerinde küçük resimler ve isimler halinde listelenecek, daha sonra ListView üzerindende PictureBox üzerine sürükleyip bıraktığımız zaman resmin biraz daha büyük hali gösterilecek. Yani bu uygulamamızda, hem form dışından hemde form içinden sürükle bırak işlemi için örnek uygulama geliştirmiş olacağız.

Formumuzun yerleşme düzeni ise;

 

ListView kontrolümüz üzerinde sürükle bırak işlemleri yapabilmemiz için, AllowDrop özelliğini TRUE olarak değiştirmemiz gerekmektedir.

 

PictureBox kontrolümüzünde AllowDrop özelliğini True yapmamız gerekiyor. Fakat PictureBox özelliklerinde yada IntelliSense penceresinde AllowDrop property'si gelmemektedir. Bunun nedenini PictureBox'ın metadatalarına bakarak görebiliriz.

MetaData'da gördüğünüz gibi PictreBox nesnesinin AllowDrop property'si var fakat, Browsable özelliği false olarak verildiği için, form tarafında bu property'e erişemiyoruz. EditorBrowsable özelliğindede Never kullanıldığı için IntelliSense penceresindede bu özellik gelmiyor. Dolayısıyla bu property'i kullanmak için, formun Load methodunda kendimiz yazmamız gerekecek.

Formun Load olayına, pictureBox1'in AllowDrop özelliğini true yaptıktan sonra,

ListView kontrolümüzün, View Özelliğini Details olarak değiştirelim ve Small ImageList özelliğinide formumuza eklediğimiz ImageList nesnemizi seçelim.

Daha sonra Edit Columns diyerek;

bir tane kolon oluşturalım.

Kolonu oluşturduktan sonra, listView kontrolümüzün DragEnter olayına kod yazmaya başlayalım.


Yukarıdaki DragEnter olayına ilgili kodları yazdıktan sonra, dışardan resim sürükleyip bıraktığımızda (listView nesnesinin üzerine)

 

seçilen tüm resimlerin, küçük önizleme halleri ve resim adlarının geldiğini göreceksiniz.

Not: PictureBox kontrolünün borderStyle özelliğini FixedSingle, ListView kontrolün MultiSelect özelliğini False, ImageList kontrolünün Image Size: 32; 32, Image Bith Depth özelliğini ise Depth32Bit olarak ayarladım.

Şimdi listView nesnesinden seçtiğimiz resmi sürükleyip, pictureBox kontrolünün üzerine bıraktığımızda resmin biraz daha büyük halini gösterelim.

Öncelikle ListView kontrolünün MouseDown olayına kod yazmaya başlayalım.

MouseDown olayında, listView kontrolü üzerinde Drag Drop yapıldığında kontrolün hangi itemlerinin özellikleri taşınacağını belirttik.

Şimdi son olarak, pictureBox üzerine Sürükle Bırak yapıldığında tetiklenecek olan olayın methoduna kod yazalım.(DragEnter olayı)

Final olarak, ListView üzerindeki item'lardan herhangi birini seçip, pictureBox üzerine sürükleyip bıraktığımız zaman, resmin biraz daha büyük halini görebiliyoruz.

ImageList üzerinden çalıştığımız için, resim çözünürlüğü çok düşük olarak gözüküyor.

Proje çalışmasını indirmek için tıklayınız.

Umarım sizler için, güzel ve yararlı bir uygulama olmuştur.

Bir sonraki makalemde görüşmek dileğiyle

Saygılarımla

Serkan PEKTAŞ

Çalışma Dosyası