在表单外部拖放图片框图像

时间:2018-01-29 19:13:35

标签: c# .net vb.net controls

我一直试图以与Windows资源管理器相同的方式从图像框外部的图片框中拖动图像,例如,将其放入外部Web浏览器中查看,Skype发送等

切换到VB.NET以找到最基本的解决方案,但遗憾的是没有运气。拖放效果显示在我的表单之外,但是,没有应用程序接受或正确响应图像丢弃。

代码在Picturebox的MouseDown事件上运行。

Me.DoDragDrop(PictureBox1.Image, DragDropEffects.All)

有什么想法吗? C#或VB.NET,对我来说都很好。

由于

2 个答案:

答案 0 :(得分:0)

我找到了WPF的这个解决方案:Drag and drop to Desktop / Explorer

对于winforms的工作原理如下:

private void DragDropImage()
{
  var filename = "filename.jpg";
  var path = Path.Combine(Path.GetTempPath(), filename);
  this.pictureBox1.Image.Save(path);
  var paths = new[] { path };
  this.pictureBox1.DoDragDrop(new DataObject(DataFormats.FileDrop, paths), DragDropEffects.Copy);
}

private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
  if (e.Button == MouseButtons.Left)
    this.DragDropImage();
}

这会将您的图片框内容复制到临时目录。然后做一个dodragdrop。它经过测试并适合我。代码在MouseMove中执行,并检查是否单击了鼠标。

答案 1 :(得分:0)

但是,我没有看到浪费时间/处理能力来保存图像的必要性,所以我将其修改为以下,以防将来有人面临同样的问题。代码插入控件的MouseDown事件中。

VB.NET:

Me.DoDragDrop(New DataObject(DataFormats.FileDrop, {"Image Path"}), DragDropEffects.All)

C#:

this.DoDragDrop(new DataObject(DataFormats.FileDrop, new[] {@"Image Path"}), DragDropEffects.All);

非常感谢,非常感谢。