wYw729 发表于 2022-3-6 11:03

【已解决】C# 微信图片拖拽

本帖最后由 wYw729 于 2022-3-20 21:52 编辑

问题描述:
我做了一个winform程序 ,其中的一个功能是把照片拖到winform程序内显示。
1. 拖拽本机照片正常显示
2.从微信PC客户端拖拽到本地桌面图片可以保存到桌面(微信PC版自带功能)。
3.从微信PC客户端拖拽到winform程序中,禁止拖拽。(我需求的功能)

请教问题:
为什么,不能直接从微信PC客户端的聊天窗口直接拖拽到winfrom中?
是什么原因造成的?
解决思路是什么样的?

有源码最好,没有也请描述清楚解决思路!万分感谢,跪求。

附图一张

xiaovssha 发表于 2022-3-6 13:52

三滑稽甲苯 发表于 2022-3-6 14:43

我的猜测是微信图片拖到桌面/文件管理器是它专门做了接口适配,但是并没有做拖到其他地方的接口

gzm970726 发表于 2022-3-6 16:08

谢谢楼主分享666 学习了 顶一下

wYw729 发表于 2022-3-6 16:36

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;
      }

这是我写的代码 可否提供源码

wYw729 发表于 2022-3-6 16:52

xiaovssha 发表于 2022-3-6 13:52


我试了一下 textbox可以 我用pictureBox显示的不让拖

wYw729 发表于 2022-3-6 16:59

xiaovssha 发表于 2022-3-6 13:52


感谢你的解答 问题解决了

e.Effect = DragDropEffects.Move;不可以
换成
e.Effect = DragDropEffects.Copy; 就解决了

零下八度 发表于 2022-3-6 17:28

本帖最后由 零下八度 于 2022-3-6 17:30 编辑

设置 AllowDrop = true 就可以拖了。

都是障眼法而已,其实还是跟你本地拖放到 winform 一样的,所谓的"从微信PC客户端拖拽到winform程序中"其实是俩步骤,
1.微信把图片保存到本地了,然后在拖放事件里给你提供这个图片的路径(微信做的,与你无关,你知道就行)
2.你自己的程序接收这个图片路径,然后读取出来显示到 pictureBox(做法跟拖放本地图片一模一样) 。

原理就是这么个原理,代码就不打了,也不难

wYw729 发表于 2022-3-6 17:30

零下八度 发表于 2022-3-6 17:28
设置 AllowDrop = true 就可以拖了。

都是障眼法而已,其实还是跟你本地拖放到 winform 一样的,所谓的" ...

设置 AllowDrop = true 是拖拽的前提,我这原因是 e.Effect = DragDropEffects.Move;   。。Move改Copy就可以了 。谢谢解答。

零下八度 发表于 2022-3-6 17:49

都行吧,一般拖放取数据我都是用 DragDropEffects.All 。都说到这了,有兴趣的话,你可以试试拓展一下,练练手。
比如跟微信一样拖放到任意文件夹保存图片,在 pictureBox1 拖 到 pictureBox2,在 exe1 pictureBox1 拖到 exe2.pictureBox1,
当然,其实都不难,也没啥特殊用处,只是说这是个练手方向,你做完这几个,相信拖放文件这种小把戏对你来说应该就理解的差不多了,
页: [1] 2
查看完整版本: 【已解决】C# 微信图片拖拽