Bu site emekli olmuştur. Arşiv amaçlı olarak
BT AKADEMİ
sponsorluğunda yayın hayatına devam etmektedir.
Ana Sayfa
.net TV
Makaleler
Kaynak Kod
Haberler
Serbest Köşe
Canlı Köşe
Forum
C#nedir?
Ekibimiz
RSS
ADO.NET/SQL
C / Sys Prog.
Genel
Mono ve .NET
Silverlight
XML / Web Serv.
X86 Assembly
C++ / C++.NET
J#.NET / Java
.NET 3.x
UML / Analiz
Yazılım Müh.
ASP.NET
C# / VC#/.NET
Mobil Prog.
PHP 5
YAZAR HAKKINDA
Caner Şahan
http://www.csharpnedir.com/
İletişme geçmek için
tıklayın
.
24
Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için
tıklayın
.
Yayınlanan diğer makaleleri için
tıklayın
.
İlgili etiketler:
C# / VC#/.NET
Caner Şahan
YAZI HAKKINDA
Türü
:
Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır.
Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi
:
Orta
Kategori
:
C# / VC#/.NET
Yayınlanma Tarihi
:
13.4.2004
Okunma Sayısı
:
65488
Yorum Sayısı
:
2
yorum yaz
SİTE İÇİ ARAMA
Üye
GİRİŞİ
Üye girişi için
tıklayın
.
Kullanıcı Adı
Şifre
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
Şifremi / Kullanıcı Adımı unuttum.
C#nedir? hesabınız yok mu?
Üye olabilmek için
tıklayın
.
Serbest KÖŞE
(?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır.
Bu yazılar editör incelemesine girmeden yayınlanır.
Silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
Bende Yazmak İstiyorum
Blogroll
Turhal Temizer
Conda install environment.yml Package
8.12.2024
Turhal Temizer
Mac OS/X Removing CUDA
8.12.2024
Burak Selim Şenyurt
Rust ile ECS Yaklaşımını Anlamak
8.12.2024
Burak Selim Şenyurt
Birlikte Rust Öğrenelim Serisi
8.12.2024
Diğer Herşey
»
Makaleler RSS
»
Video Gönder
»
Makale Gönder
»
Serbest Köşeye Yazı Gönder
»
Yazar Başvurusu
»
C#nedir? Ekibinde Olmalıyım!
Sponsorlar
Ana Sayfa
/
Makaleler
/
C# / VC#/.NET
/
C# ile DragDrop(Sürükle-bırak) İşlemleri
C# ile DragDrop(Sürükle-bırak) İşlemleri
Favorilerime Ekle
Gönderiliyor lütfen bekleyin...
arkadaşıma gönder
Arkadaşınızın email adresi:
Mesajınız:
Merhabalar öncelikle yeni bir yazıda buluşmaktan memnunum.Bu yazımda C# ile drag-drop işlemlerinden bahsedeceğim. Yani visual programlamanın önemli unsurlarından biri. Programcılar açısından düşünürsek fazla önemli gelmeyebilir belki ama son kullanıcılar için oldukça önemli. İşlemlerin görsel olması maliyetleri o kadar düşürüyor(en azından eğitim masraflarını).
Ne Yapacağız
Uygulama olmadan yazılım olmaz diyerek kendimize bir alan seçerek yazılımımızı buraya uyarlayalım. Kendimi bir bilet satan gişe görevlisinin yerine koydum ve yapacağım işlemi düşündüm. Bu kolay bi iş olmalıydı.Yani bir iki tıkta bu iş bitmeliydi. Nitekimde bizim gelecek ve şimdiki zaman dostumuz C#, visual basic’ten bu özellikleri birer birer almış. İnsan bunları yaparken C#’a bir kere daha hayran kalıyor. Hem C’nin esnekliği ve zarifliği hemde visual basicin görselliği...Neyse fazla konudan uzaklaşmadan yapacağımız uygulamanın bir şekli aşada verilmiştir.
Yani ben bilet satarken "bilet al"daki resmi sürükleyip almak istediğim koltuğa sürükleyip bırakacam ve bundan sonra haliyle koltukta artık "boş" değil "dolu" yazacak.Aynı koltuğu bir daha almak istersem bana bir hata mesajı verecek. Ve biletlerin durumunu izlemek için listbox’a ne olup bittiği yazılacak.Reset buttonu tüm uygulamayı sıfırlayacak. Bilet iptal ise bu resmin altındaki resmi sürükleyip koltuğa götürdüğümüzde koltuğu boşaltacak.Birde durum buttonu ile sistemin doluluk oranını öğrenebileceğiz.İşte bu kadar.
Drag-Drop’ta Kullanılan eventlar:
Drag olayını başlaması için öncelikle bir yerlere tıklamamız gerekir değil mi? Bu yüzden Drag olayını başlatacak MouseDown olayı bizim start noktamız olacak. Daha sonra drop olayı iki kademe gerçekleşecek. Birinci aşamada gidilecek yere kadar sürüklenmesi yani bunun C#’ta karşılığı DragOver. İkinci ve son aşama ise hedefte bu drag’lenen nesnenin drop olarak alınması ki bu DragDrop event oluyor.Aşadaki şema ile daha anlaşılır bir durum yakalanmaya çalışılıyor...
Program:
Programda yukarıda görülen algoritma parçasında dikkat etmemiz gereken yerlerden biri drop’u alacak nesnenin allowdrop=true olması. Bu can alıcı noktalardan biridir. Drop’lanacak nesnelerin bütün allowdrop özelliklerini kodla veya properties’den ayarlayalım. Şimdi yukarıdaki algoritmaya sadık kalarak devam edersek. İlk önce mousedown event’imizi yazalım.(tabiki bu event sürükleyeceğimiz nesneye ait)
private void satınal_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
if(e.Button==MouseButtons.Left)
{
satınal.DoDragDrop(satınal.Image,DragDropEffects.All);
}
}
Burada MouseEnetArgs’dan türemiş e nesnesi bizim mousebutton kontrolü yapmamıza yarıyor. Birde winform nesnesinin drag’i başlatan .DoDragDrop ile neyi nasıl dragdropa başlatacağımızı karar veriyor.Yani biz mouse’umuzun sol tuşuna bastığımız sürece dragdrop olayı başlangıçta. Daha sonra ne demiştik gidilecek nesnenin dragover eventı çalışacaktı. Şimdi bu eventı inceliyelim. Bu event ile dragdrop olayı başlayan nesneyi form üzerinde sürüklemekle bu nesneyi kopyalamaktan başka bir şey yapmayacaz. Birde burda e.KeyState değeri bizim mouse’un hangi tuşuna bastığımıza veya ctrl,shift tuşlarından hangisine bastığımızı kontrol için geliştirilmiş sadece Dragover eventına has bir özelliktir. Aşağıda keystate tablosu verilmiştir.
e.KeyState değeri
Anlamı
1
Mousee’un soltuşu basılı anlamına gelir
2
Mousee’un sağ tuşu basılı anlamına gelir
5
Shift tuşu basılı anlamına gelir
9
Ctrl tuşu basılı anlamına gelir.
private void koltuk1_DragOver(object sender, System.Windows.Forms.DragEventArgs e)
{
if(e.KeyState==1)
{
e.Effect=DragDropEffects.Copy;
}
}
Ve geldik son aşamaya burada drop olayı meydana gelicek nesnenin DragDrop eventına yapacağımız işlemi yaparız. Ben programımda her koltuğu bir label olarak gösterdim ama işin aslı hepsini bir koltuk dizisi olarak göstermektir.Dizi olarak gösterdiğimizde haliyle kontrol etmek istediğimiz zaman bunu döngüyle halledebiliyoruz.Ama 5 koltuklu bir yapımız olduğu için dizi gereksinimi fazla yok. Yaptığımız olayda koltuk aldığımız zaman dolu yazacaktı daha doğrusu dolu pictureboxının resmi gözükecekti. Yani resmi değiştirecez. Sonra bu koltuk satıldı diye bir durum belirtecez.
private void koltuk1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
{
if(e.Data.GetData(DataFormats.Bitmap)==iptal.Image)
{
if(koltuk1.Image==bos.Image)
koltuk1.Image=bos.Image;
else
{
koltuk1.Image=bos.Image;
listBox1.Items.Add("1 nolu koltuk iptal edildi");
}
}
if(koltuk1.Image==dolu.Image)
{
MessageBox.Show("Bu koltuk satılmış alamazsınız");
}
else
{
if(e.Data.GetData(DataFormats.Bitmap)==satınal.Image)
{
koltuk1.Image=dolu.Image;
listBox1.Items.Add("1 nolu koltuk satıldı");
}
}
}
Not:
Yukarıdaki örnekte sadece koltuk1’in drag-dropu yapılmıştır. Diğer koltukları yapmak için bunları tek tek yapmalıyız. İşte bu noktada dizinin çok önemli olduğu göze çarpıyor ama neyse bizde koltuk sayısı az olduğu için çok önemli değil.
Son Söz:
Umarım merak edilen bir konuyu aydınlatmışımdır.Bu noktada makaleme son veriyorum. Ve çok alakasız bir konuya gidiyorum. Transmission Lines adlı formül kağıtlarının ve notlarının içine girip perşembe günkü bu zor vizeye hazırlanıyorum....:(
University of Istanbul Dep.of Electronic CANER ŞAHAN
[email protected]
kaynak kodlar için>>>
Makale:
C# ile DragDrop(Sürükle-bırak) İşlemleri C#, Visual C# ve .NET Caner Şahan
Yazılan Yorumlar
Yorum Yaz
NİS
29
2010
macroasm macroasm
/
üye hakkında
Hocam elinize sağlık. Picture i taşırken kesik çizgi ile hayalet picture yapabilirmiyiz.
OCA
17
2010
Merve GENÇ
/
üye hakkında
Merhaba benim size bir sorum olacak; neden bilemiyorum uygulama içinde drag drop yapabilirken dısarıdan dosya atarken sorun oluyor; diğer bilgisayarlarda kodlar calısırken benimkinde çalısmıyor. Windows 7yle bir alakası olabilir mi? cunku socket denemesi yaparkende benzer bir problemle karsılasmıstım. Bu arada sızın yazdıgınız bu programda bende calısmıyor; oylece duruyor:) hiç bir tepki vermiyor:(
Sayfalar :
1
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için
tıklayın
.
Üye değilseniz
Üyel Ol
linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
Bu Konuda Son 10
Eklenen Son 10
Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor
Dizayn ve Kodlama
bt
akademi
. Tüm Hakları Saklıdır © Copyright 2002-2009 c#nedir?com
Makaleler
Serbest Köşe
Makale Gönder
.Net TV
Video Gönder
Canlı Köşe
Kaynak Kod
Forum
Haberler
Röportajlar
Anketler
C# Nedir?
İletişim
Site Haritası
RSS
Favorilere Ekle
Üyelik
Hesap Aktivasyon
Ekibimiz
Ekibe Katıl