Programlamada sürükle bırak tekniği çok kullanılmaktadır. Bu yöntemi kendi projenizde kullanabileceğiniz gibi işletim sistemi yardımıyla istediğiniz bir dosyası projenize ekleeybilirsiniz. Bu uygulamamızda bilgisayarda bulunan bir resmi PictureBox nesnesine sürükleyip bırakma işlemini gerçekleşitreceğiz.
Form sayfasına 1 adet PictureBox ekleyin. Form sayfasının AllowDrop özelliğini true yapınız. Aşağıdaki kodları ekleyiniz.
using System;
using System.Drawing;
using System.IO;
using System.Threading;
using System.Windows.Forms;
namespace Picturebox_Move_Image_With_Mouse
{
public partial class Form5 : Form
{
public Form5()
{
InitializeComponent();
}
bool vdata;
string path;
Image image;
Thread ImageThread;
private void Form5_DragEnter(object sender, DragEventArgs e)
{
string filename;
vdata = GetImage(out filename, e);
if (vdata)
{
path = filename;
ImageThread = new Thread(new ThreadStart(saveimage));
ImageThread.Start();
e.Effect = DragDropEffects.Copy;
}
else
{
e.Effect = DragDropEffects.None;
}
}
private void saveimage()
{
//throw new NotImplementedException();
image = new Bitmap(path);
}
private bool GetImage(out string filename, DragEventArgs e)
{
//throw new NotImplementedException();
bool rtun = false;
filename = string.Empty;
if ((e.AllowedEffect & DragDropEffects.Copy) == DragDropEffects.Copy)
{
Array data = ((IDataObject)e.Data).GetData("FileDrop") as Array;
if (data != null)
{
if ((data.Length == 1) && (data.GetValue(0) is string))
{
filename = ((string[])data)[0];
string extension = Path.GetExtension(filename).ToLower();
if ((extension == ".jpg") || (extension == ".png"))
{
rtun = true;
}
}
}
}
return rtun;
}
private void Form5_DragDrop(object sender, DragEventArgs e)
{
if (vdata)
{
while (ImageThread.IsAlive)
{
Application.DoEvents();
Thread.Sleep(0);
}
pictureBox1.Image = image;
}
}
}
}
|