【已解决】C# 微信图片拖拽
本帖最后由 wYw729 于 2022-3-20 21:52 编辑问题描述:
我做了一个winform程序 ,其中的一个功能是把照片拖到winform程序内显示。
1. 拖拽本机照片正常显示
2.从微信PC客户端拖拽到本地桌面图片可以保存到桌面(微信PC版自带功能)。
3.从微信PC客户端拖拽到winform程序中,禁止拖拽。(我需求的功能)
请教问题:
为什么,不能直接从微信PC客户端的聊天窗口直接拖拽到winfrom中?
是什么原因造成的?
解决思路是什么样的?
有源码最好,没有也请描述清楚解决思路!万分感谢,跪求。
附图一张
我的猜测是微信图片拖到桌面/文件管理器是它专门做了接口适配,但是并没有做拖到其他地方的接口 谢谢楼主分享666 学习了 顶一下 xiaovssha 发表于 2022-3-6 13:52
private void pictureBox1_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
e.Effect = DragDropEffects.Move;
}
else
{
e.Effect = DragDropEffects.None;
}
}
private void pictureBox1_DragDrop(object sender, DragEventArgs e)
{
string[] s = (string[])e.Data.GetData(DataFormats.FileDrop);
pictureBox1.ImageLocation = s;
_PicPath1 = s;
}
这是我写的代码 可否提供源码 xiaovssha 发表于 2022-3-6 13:52
我试了一下 textbox可以 我用pictureBox显示的不让拖 xiaovssha 发表于 2022-3-6 13:52
感谢你的解答 问题解决了
e.Effect = DragDropEffects.Move;不可以
换成
e.Effect = DragDropEffects.Copy; 就解决了 本帖最后由 零下八度 于 2022-3-6 17:30 编辑
设置 AllowDrop = true 就可以拖了。
都是障眼法而已,其实还是跟你本地拖放到 winform 一样的,所谓的"从微信PC客户端拖拽到winform程序中"其实是俩步骤,
1.微信把图片保存到本地了,然后在拖放事件里给你提供这个图片的路径(微信做的,与你无关,你知道就行)
2.你自己的程序接收这个图片路径,然后读取出来显示到 pictureBox(做法跟拖放本地图片一模一样) 。
原理就是这么个原理,代码就不打了,也不难
零下八度 发表于 2022-3-6 17:28
设置 AllowDrop = true 就可以拖了。
都是障眼法而已,其实还是跟你本地拖放到 winform 一样的,所谓的" ...
设置 AllowDrop = true 是拖拽的前提,我这原因是 e.Effect = DragDropEffects.Move; 。。Move改Copy就可以了 。谢谢解答。 都行吧,一般拖放取数据我都是用 DragDropEffects.All 。都说到这了,有兴趣的话,你可以试试拓展一下,练练手。
比如跟微信一样拖放到任意文件夹保存图片,在 pictureBox1 拖 到 pictureBox2,在 exe1 pictureBox1 拖到 exe2.pictureBox1,
当然,其实都不难,也没啥特殊用处,只是说这是个练手方向,你做完这几个,相信拖放文件这种小把戏对你来说应该就理解的差不多了,
页:
[1]
2