我一直试图以与Windows资源管理器相同的方式从图像框外部的图片框中拖动图像,例如,将其放入外部Web浏览器中查看,Skype发送等
切换到VB.NET以找到最基本的解决方案,但遗憾的是没有运气。拖放效果显示在我的表单之外,但是,没有应用程序接受或正确响应图像丢弃。
代码在Picturebox的MouseDown事件上运行。
Me.DoDragDrop(PictureBox1.Image, DragDropEffects.All)
有什么想法吗? C#或VB.NET,对我来说都很好。
由于
答案 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)
VB.NET:
Me.DoDragDrop(New DataObject(DataFormats.FileDrop, {"Image Path"}), DragDropEffects.All)
C#:
this.DoDragDrop(new DataObject(DataFormats.FileDrop, new[] {@"Image Path"}), DragDropEffects.All);
非常感谢,非常感谢。