项目中有时候需要将一些文件拖拽进来打开,比如MapGIS 或者ARCGIS的地图显示试图中可以直接打开相应拖拽进来的文件。小编今天尝试拖拽打开图片,但是发现DragEnter事件并没有被触发。原来发现需要属性AllowDrop的支持。
开发环境:.Net FrameWork 3.5
IDE: Visual Studio 2010
具体代码如下:
private void Form1_Load(object sender, EventArgs e)
{
pictureBox1.AllowDrop = true;
}
private void pictureBox1_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
e.Effect = DragDropEffects.All;
}
}
private void pictureBox1_DragDrop(object sender, DragEventArgs e)
{
//获取第一个元素
string FileName = (e.Data.GetData(DataFormats.FileDrop, false) as string[])[0];
try
{
pictureBox1.Load(FileName);
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
知识点1:
pictureBox1.AllowDrop = true;
解决pictureBox不能拖拽的问题。
知识点2
(e.Data.GetData(DataFormats.FileDrop, false) as string[])
获取拖拽的文件的完整路径
源码下载地址:点击这里下载