[ drag ] /
Makaleler-Article(s)
drag ile ilgili toplam 5 makale bulundu ! (A total of 5 article(s) about drag was(were) found in all of articles!)
Article |
---|
PictureBox’ta Drag Drop İşlemleri Merhaba arkadaşlar bu makalemizde PictureBox nesnesinde sürükle bırak işlemini gerçekleştireceğiz. Bunun için PictureBox nesnesinin MouseDown, DragOver ve DragDrop olaylarına aşağıdaki kodları yazın. | GridView da Drag Drop İşlemleri Merhaba arkadaşlar bu makalemizde GridView nesnesinde seçili satırın yerini sürükle bırak metodu ile değiştireceğiz. Bunun için javascript kodlarından yararlanacağız. | PictureBox ta 3 Adımda Drag Drop İşlemi Temel olrak Drag&Drop işlemini basit bir örnek(form üzerindeki bir resmi belirlediğimiz panele sürükleyip bırakmak) üzerinden 3 adımda nasıl projelerimize adapte edebiliriz;
Adım 1:
PictureBox nesnesi bizim kaynağımız, Panel nesnesi ise hedefimiz.
Adım 2:
İlk önce PictureBox nesnemizi sürükleme(Drag) işlemine hazırlamalıyız. Bunun için;
* PictureBox nesnesinin Mouse Down ve Mouse Move olaylarını eklemeliyiz.
* Mouse Down olayında nesneye tıklandığı anki pozisyonunu saklamalıyız.
* Mouse Move olayında ise nesnenin tıklandığını(Mouse Down olayı) ve sürükleme işlemi için belirlenen aralık dahilinde işlemin gerçekleştirilip gerçekleştirilmediğini kontrol etmeliyiz.
* Eğer 3. adımda istediklerimiz gerçekleşmiş ise nesnenin DoDragDrop methodunu ClipBoard a kopyalanacak nesneyi ve efekt tipini belirterek çağırırız.
private Point mouseDownLocation = Point.Empty;
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
mouseDownLocation = new Point(e.X,e.Y);
}
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
Size dragBoxSize = SystemInformation.DragSize;
if ((dragBoxSize.Width > Math.Abs(mouseDownLocation.X - e.X)) || (dragBoxSize.Height > mouseDownLocation.Y - e.Y))
{
pictureBox1.DoDragDrop(pictureBox1, DragDropEffects.Copy);
}
}
}
Adım 3:
Sıra sürükleme işleminin gerçekleşeceği Panel kontrolu için gerekli işlemlerin gerçekleştirilmesine geldi.
* İlk olarak nesnenin sürüklenen nesneleri kabul etmesi için AllowDrop özelliğini aktif hale getirmeliyiz.
* Sürüklenecek olan (örnekte PictureBox) nesnenin DoDragDrop methoduna parametre olarak verilen efektin Panel kontrolünün Drag Enter ve Drag Over olaylarında geçerli olduğunu belirtmeliyiz.
* ve artık nesnemizi sürükledikten sonra ClipBoard dan onu çağırıp Panel kontrolüne eklemeliyiz. Tabiki bu işlemi DragDrop olayı içinde gerçekleştireceğiz. Önemli bir nokta olarak, Panel kontrolüne sürükleyerek eklediğimiz PictureBox nesnesinin Location(pozisyonunu) belirtmez isek otomatik olarak Panel kontrolünün 0,0 noktasına yerleşecektir. Bunu engellemek içinde gene DragDrop olayı içinde sürükleme işleminin bittiği noktanın koordinatlarını tutmamız grekir ve tabiki bu noktayıda Panel in koordinat sistemine uyarlamalıyız.
private void panel1_DragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Copy;
}
private void panel1_DragOver(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Copy;
}
private void panel1_DragDrop(object sender, DragEventArgs e)
{
Int32 dropX = e.X;
Int32 dropY = e.Y;
Point dropLocation = new Point(dropX,dropY);
dropLocation = panel1.PointToClient(dropLocation);
PictureBox pb = e.Data.GetData(typeof(PictureBox)) as PictureBox;
panel1.Controls.Add(pb);
pb.Location=dropLocation;
}
tüm işlem bu.
NOT: Bu makale M. Genç adlı yazardan alıntı olarak alınmıştır | Sürükle Bırak (Drag-Drop) Bu örnekte resimlere ait dosya yollarını listbox a sürükle bırak metodu ile ekleyeceğiz. Daha sonra listbox taki seçili itemsteki image i PictureBox ta göstereceğiz. Aşağıdaki şekilleri inceleyin.
Formunuza 1 adet ListBox,PictureBox ve 2 adet Label ekleyin.
Public Class Form1
Private Sub Form1_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles Me.DragDrop
If CType(e.Data.GetData(DataFormats.FileDrop), System.Array)(0).Endswith(".bmp") = True Or CType(e.Data.GetData(DataFormats.FileDrop), System.Array)(0).Endswith(".jpg") = True Or CType(e.Data.GetData(DataFormats.FileDrop), System.Array)(0).Endswith(".jpeg") = True Or CType(e.Data.GetData(DataFormats.FileDrop), System.Array)(0).Endswith(".gif") = True Then
ListBox1.SelectedIndex = ListBox1.Items.Add(CType(e.Data.GetData(DataFormats.FileDrop), System.Array)(0))
End If
End Sub
Private Sub Form1_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles Me.DragEnter
e.Effect = e.AllowedEffect
End Sub
Private Sub ListBox1_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles ListBox1.DragDrop
If CType(e.Data.GetData(DataFormats.FileDrop), System.Array)(0).Endswith(".bmp") = True Or CType(e.Data.GetData(DataFormats.FileDrop), System.Array)(0).Endswith(".jpg") = True Or CType(e.Data.GetData(DataFormats.FileDrop), System.Array)(0).Endswith(".jpeg") = True Or CType(e.Data.GetData(DataFormats.FileDrop), System.Array)(0).Endswith(".gif") = True Then
ListBox1.Items.Add(CType(e.Data.GetData(DataFormats.FileDrop), System.Array)(0))
End If
End Sub
Private Sub ListBox1_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles ListBox1.DragEnter
e.Effect = e.AllowedEffect
End Sub
Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
PictureBox1.ImageLocation = ListBox1.SelectedItem.ToString
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
End Sub
End Class
Bir sonraki makalede buluşmak üzere. Bahadır ŞAHİN | ListBox Drag Drop (Sürükle-Bırak) Bu makalemizde Listbox ta drag drop yani sürükle bırak konusunun inceleyeceğiz. Bunun için formumuza 2 adet listbox ekleyin. Aşağıdaki şekildeki gibi dizayn ediniz. Listbox1 deki istenilen bilgileri sürükle bırak metodu ile Listbox2 ye ekleyeceğiz ve Listbox1 den sileceğiz.
Not: Sürükle bırakı gerçekleştirebilmemiz için; Listbox1 ve Listbox2 de AllowDrop özelliğini True yapın.
Forma yazılacak kodlar:
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
With Me
.Text = "Listbox Drag Drop"
.MaximizeBox = False
End With
End Sub
Private Sub ListBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListBox1.MouseDown
Dim snoktalar As Point = New Point(e.X, e.Y)
Dim item_indis As Integer = ListBox1.IndexFromPoint(snoktalar)
If item_indis = -1 Then
MessageBox.Show("Boş bir alana tıkladınız. Boş alanda drag & drop gerçekleştiremezsiniz.")
End If
If (e.Button = Windows.Forms.MouseButtons.Left) Then
ListBox1.DoDragDrop(ListBox1.Items(item_indis), DragDropEffects.All)
End If
End Sub
Private Sub ListBox2_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles ListBox2.DragDrop
‘Listbox2 ye ekliyoruz ListBox2.Items.Add(e.Data.GetData(DataFormats.Text))
‘Listbox2 ye eklenen item i Listbox1 den kaldırıyoruz ListBox1.Items.Remove(e.Data.GetData(DataFormats.Text))
End Sub
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 If
End Sub
End Class
‘Faydalı olması dileğiyle. Bir sonraki makalede buluşmask üzere...Bahadirsa |
|