为什么C#的Form设置了AllowDrop=true仍无法把文件拖动到窗口上面

一旦用鼠标拖动文件放到Form上面,鼠标就变成了一个圆圈中间有个斜杠(即代表无法把文件拖进去)
但我确实已经把Form的AllowDrop属性设置为true,
问这个问题的不止我一个,解决方法也都试过(如关闭UAC、如添加DragEnter的方法),均无效。
https://blog.csdn.net/FL1623863129/article/details/77066036?locationNum=6&fps=1
https://blog.csdn.net/aiqinxuancai/article/details/50903564
http://tieba.baidu.com/p/3059784450
https://zhidao.baidu.com/question/515025128.html

实在不知道哪里出了问题。
可在这里下载源文件,很简单的几段代码(从网上抄来的):
https://pan.baidu.com/s/1A6ag0xpB3nmyP4JG2UmvXQ

(另外,该代码中有个按钮和文字框,无视里面的内容就好)

以下有简易的代码可供浏览。但我觉得可能不只是代码本身的问题?

 public Form1()
        {
            InitializeComponent();
            this.AllowDrop = true;

        }
        private void Form1_Load(object sender, EventArgs e)
        {
            this.AllowDrop = true;
        }

  private void Form1_DragEnter(object sender, DragEventArgs e)
        {
            if (e.Data.GetDataPresent(DataFormats.FileDrop))
            {
                //e.Effect = DragDropEffects.Move;
                //lb1.Text = "12345";
                if (e.Data.GetDataPresent(DataFormats.FileDrop)) e.Effect = DragDropEffects.Link;
                else e.Effect = DragDropEffects.None;
            }
        }
0

3个回答

 using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Q698507
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_DragDrop(object sender, DragEventArgs e)
        {
            if (e.Data.GetDataPresent(DataFormats.FileDrop))
            {
                label1.Text = ((string[])e.Data.GetData(DataFormats.FileDrop.ToString()))[0];
            }
        }

        private void Form1_DragOver(object sender, DragEventArgs e)
        {
            e.Effect = DragDropEffects.Copy;
        }
    }
}

1
vainquit
vainquit 万分感谢!!
10 个月之前 回复

图片说明

0

完整的源代码和可执行程序:https://download.csdn.net/download/caozhy/10627448

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
[C#]AllowDrop设置为True后拖放显示禁止标志的问题
Form设置了AllowDrop属性,但是文件拖入进来, 鼠标还是显示禁止的标志,也调用不到Drop的事件。 网上查询,大部分说是UAC的问题.其实除了管理员权限这种可能,还有就是忘记实现DragEnter. private void form1_DragEnter(object sender, DragEventArgs e) { if...
C# AllowDrop设置为True后拖放无效的问题
设置了AllowDrop但是拖入进来鼠标还是显示禁止的标志,也调用不到Drop的事件。这样的话一般来说是你的程序使用了管理员权限!在不同UAC等级下,是不允许拖放的。官方建议是让你的程序不使用管理员权限。具体请参看: http://blogs.msdn.com/b/patricka/archive/2010/01/28/q-why-doesn-t-drag-and-drop-work-when-m
C#中allowdrop设置为true也不能让dragdrop事件触发解决办法
很简单,以listview为例,在dragover事件中添加以下代码,就可以触发dragdrop事件   private void listView1_DragOver(object sender, DragEventArgs e)         {             e.Effect = DragDropEffects.All;         } 或者dargenter中
C#WinForm程序以管理员方式运行后文件拖动无效
     今天遇到个棘手问题,在此记录下,C#WinForm程序以管理员方式运行后,文件无法拖动到任何控件上,DragDrop事件根本没触发,文件拖动生成记录功能成了摆设。      问题的原因找到了,由于Win7的安全机制,导致与文件拖放的WM_DROPFILES消息和WM_COPYGLOBALDATA 消息被系统拦截了,从而导致了文件拖放失效的问题。     解决思路一:       ...
C#窗口文件拖拽
C#窗口文件拖拽 1.修改窗口属性 AllowDrop,设为 True 后可以允许控件接收拖放到其上面的数据。 2.选中要接收拖拽事件的物体(比如说窗体,TextBox,button)属性 AllowDrop,设为 True 后可以允许控件接收拖放到其上面的数据。 3.选中要接收拖拽事件的物体(比如说窗体,TextBox,button)->Events事件->DragDrop 里选中响...
章鱼哥—VB.NET 控件中你不知道的属性之——AllowDrop 应用详解
如何将桌面或者文件夹中的图片拖拽到窗体
C#把文件拖动到窗口上面 Q698507 问题的回答
C#把文件拖动到窗口上面 Q698507 问题的回答 https://ask.csdn.net/questions/698507
WPF的C#程序给TextBox设置接受文件拖放
设置TextBox的属性AllowDrop="True" x:Name="textBox"属性-> 事件,  添加两个事件PreviewDragOver="TextBox_PreviewDragOver" PreviewDrop="TextBox_PreviewDrop"private void TextBox_PreviewDragOver(object sender, DragEvent...
C#把外部文件拖入PictureBox中
不知道为何.net编辑器无法自动识别PictureBox的AllowDrop,属性列表中也没有,实际上他确实可以用。 private void Form1_Load(object sender, EventArgs e) { //这句代码不会抱错,但是需要手动输入,.net编辑器无法自动识别AllowDrop this.
文件拖拽到窗口
文件拖拽到窗口方法一:重写部件拖拽处理函数 设置UI接受拖拽: 重写: .h #include <QDebug> #include <QEvent> #include <QDropEvent> #include <QMimeData>protected: void dragEnterEvent(QDragEnterEvent * event); void dropEvent(QDr
将文件拖入winform并读取
1、将AlowDrop属性设置为True2、注册两个拖入和拖入完成的事件3、具体方法 private void dataGridView1_DragEnter(object sender, DragEventArgs e) { e.Effect = DragDropEffects.Copy; } private void dataGridView1_Dr
实现从外部拖放图片到窗体上的picturebox中
实现从外部拖放图片到窗体上的picturebox中;1,新建一个窗体FORM2,窗体上放一个picturebox把该窗体的ALLOWDROP属性设为TRUE;2下面是实现这拖放的代码: (在FORM2的DragEnter,DragDrop事件中写如下代码就OK了)public partial class Form2 : Form    {        public Form2()        {            InitializeComponent();        }        priv
C# TreeView子节点拖拽到MDI主界面窗体生成子界面窗体
1、TreeView通过程序生成树在工程序添加TreeView控件,这里使用默认名字TreeView1。在主窗体load函数中,添加一个父节点和两个子节点。TreeNode tn1 = TreeView1.Nodes.Add(&quot;父节点&quot;);TreeNode node1 = new TreeNode(&quot;子节点1&quot;);TreeNode node2 = new TreeNode(&quot;子节点2&quot;);tn1....
C#WinForm 文件的拖放到指定控件
一、实现方案 1.首先对拖放到的控件的AllowDrop属性设置为ture。 2.添加控件的DragEnter事件,该事件会在文件被拖放到控件的工作区时触发。 3.在DragEnter事件方法中检查拖放文件的格式,并对拖放文件放置时的效果进行设置(此处设置为DragDropEffects.Link表示将文件链接到控件)。 4.添加控件的DragDrop事件,该事件会在文件放置完成后触发。
c#中把一个控件从一个窗体移到另一个窗体
两个不同的窗体,木有任何关系,他们的控件可以互相移来移去。下面是Form1代码,Form2中没有代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using Syst
限制窗口在屏幕范围内移动(不能移到屏幕外)
限制窗口在屏幕范围内移动(不能移到屏幕外)响应WM_WINDOWPOSCHANGING消息afx_msg void OnWindowPosChanging(WINDOWPOS FAR* lpwndpos);ON_WM_WINDOWPOSCHANGING()void CMoveWindowDlg::OnWindowPosChanging(WINDOWPOS FAR* lpwndpos)
使窗口具备拖动到边界自动最大化/还原的特性
从win7开始,windows的特性中具备了拖动窗口到屏幕边界时最大化,还原,或者占据半个工作区的功能, 如果希望自己的窗口具体这种特性,那么需要在窗口属性中添加 WS_BORDERG与WS_THICKFRAME, 但是对于DirectUI绘制的一些窗口时,在窗口创建时就添加WS_THICKFRAME会造成窗口的边框由系统绘制,不符合设计效果 解决方法是
Listbox之间互相拖拽功能
新建一个Winform。拖两个Listbox,都改allowDrag为true。 复制以下代码,覆盖。 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using Sy...
自定义WinForm控件无法拖动到窗口
自己写的一个控件复制到一个类库后,发现在工具箱中无法拖到窗口,之前自已写Demo是可以的。 折腾了下发现之前控件的是私有的,只能在本程序集中访问。 class MyControl : Control { ... } 解决办法: 1.引用控件所在类库的程序集 2.控件定义加上public访问权限,重新编译 之后就可以拖到窗口上了。
WinForm 实现文件拖拽入窗体中读取文件路径
新建一个窗体窗体中实例化一个Panel(接收拖拽的容器,推荐使用Panel 的原因有很多,简单说几点:支持Drop的容器不是太多;Panel设置完BackColor后看起来还是很美观的)设置Panel的AllowDrop属性为True随便美化一下,比如在Panel容器中加上一个Label(“Please Drag File Here”)将Panel的两个事件进行绑定 DragEnter 和 Dra...
【小技巧】发现一个小秘密,把文件拖到cmd窗口,文件路径出现了,而且可以运行
-
visual studio 2005 窗体控件不能拖动解决方案
菜单栏上没有布局菜单的可先将布局菜单拖到菜单栏上 布局->位置->自动选定选项html设计器->CSS定位->定位选项,选择相对定位 从工具箱拖动空间到窗体上,控件可自由移动位置;在没有设置相对位置前的控制依然不能拖动,可选择需要拖动的空间并选择布局->位置->相对,先前不能拖动的空间也能拖动了。
WPF如何实现拖拽打开文件(将文件拖进窗体打开)
在WPF中的实现和WinForm中的实现99%相似,将要实现接受拖拽释放的控件添加DragEnter事件和Drop事件,本例中控件Grid grid作为接受控件,添加事件操作如下: private void grid_Drop(object sender, DragEventArgs e) {     string fileName = ((System.Array)e.Data.Get
c# winform listView鼠标拖拽到pictureBox问题的解决办法,鼠标拖动
题描述 :我现在想拖动listView里的数据,摄像机1到一个pictureBox里 我一共有16个pictureBox,拖到哪个pictureBox里就在哪个里边进行判断 判断拖动的是哪个摄象机,然后再在pictureBox判断需要显示出哪个视频 一直有个问题在困扰着我,因为pictureBox没有AllowDrop属性,需要自己重写这个属性,但是我重写了,可这个属性一直在我的项目里...
html5篇——拖放(Drag和Drop)
好久没有更新html5了,继续更新html5,今天更新html5的拖放功能。 拖放,就是抓取一个对象后拖放到另一个位置。很常用的一个功能,在html5中,任何元素都能够拖放。 浏览器支持 Internet Explorer 9、Firefox、Opera 12、Chrome 以及 Safari 5 支持拖放。 注释:在 Safari 5.1.2 中不支持拖放。
WIN10下程序移到桌面边缘无法拖回来的解决办法
这是个非常神奇的情况,自己又有点二地解决了: win10是可以分屏的,你开一个窗口,把这个窗口到左边缘让它分半边屏,然后系统会自动调任务栏里在运行的程序让你选择右半屏,这个时候点那个拖不回来的程序就好了。 为什么会发生这种事我也不知道,好神奇。...
将外部文件拖拽到浏览器中预览
#dropbox{ width:800px; height: 100px; background: papayawhip; text-align: center; font-size: 30px; } ul{ background: paleturquoise; width:800px; height: 500px; } ul li{ width: 200px; hei
屏蔽WPF窗体拖动到屏幕边缘最大化
调用一些WindowsAPI可以实现此需求 public partial class ShellWindow : Window { [DllImport(&quot;user32.dll&quot;, EntryPoint = &quot;GetWindowLong&quot;)] public static extern int GetWindowLong(IntPtr hwnd, i...
求助 Webstorm无法拖动或拖出项目
如图 无法拖动或拖出标签 不知道按了什么
不能拖动CAD文件到CAD窗口打开,解决方案
运行regedit HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\EnableLUA设为0 重启
固定Form的大小不被拉大或缩小且也不能拖动【Delphi】
1、首先声明私有拦截消息的过程 //禁止调整窗体大小 procedure WMGetMinMaxInfo(var Msg: TWMGetMinMaxInfo); message WM_GETMINMAXINFO; //禁止窗体移动 procedure WMSysCommand(var message:TWMSysCommand); message WM_SYSCOMMAND
VC 实现当拖动一个文件到程序的图标上时,程序自动启动并打开该文件
MFC程序的话在int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct){。。。DragAcceptFiles();}那么在DOC的OnOpenDocument就会传入文档的路径,你就可以在这里操作文件了,当然具体的读取文件操
c# winform dataGridView鼠标拖拽到textBox里显示数据,鼠标拖动
问题描述:我现在想拖动dataGridView里的数据到textBox里 首先窗体名字为Form1 拖个dataGridView和个textBox到窗体,她们分别叫dataGridView1和textBox1 然后双击窗体,在加载窗体时显示dataGridView的数据 private void Form1_Load(object sender, EventArgs e) { // TO...
windows10 双屏幕扩展后,窗口拖动方向的问题。
-
C# WPF 如何禁止窗口拖到屏幕边缘自动最大化
win7以上的系统新增了功能--窗口拖到屏幕边缘自动最大化,如何用代码禁止? 如果窗体不允许修改大小,那么禁止最大化,其实很简单 直接将设置属性 this.ResizeMode = ResizeMode.NoResize; 但是这个窗体又是允许改变大小的,就像QQ,QQ就是既可以改变大小,又禁止了拖到屏幕边缘自动最大这个功能。 QQ的实现方法不得而知,有可能是用window
窗口移到了电脑桌面边缘拖不回来怎么解决
可能会有用户在电脑中移动窗口时,将窗口已到了电脑桌面边缘,然后发现拖不回来。如果出现了这样的一种情况,具体可以怎么解决呢?接下来系统城小编要和大家分享在这样的情况下的具体解决方法。推荐:最新ghost系统下载1、首先按alt+tab键,确保该窗口处于激活位置;2、然后再按alt+space键,激活控制菜单;3、之后再按m键,上下左右操作,将窗口移到屏幕中间位置即可。如果发现窗口移到了电脑桌面边缘拖...
电脑浏览器拖到边缘消失拖不回来了怎么办?
我的电脑是Lenovo的,win8.1系统。 解决办法: 打开浏览器 按win+向上的箭头
C#窗体不能拖大拖小 C#窗体不出现在任务栏中
FormBorderStyle= Fixed3D ShowInTaskbar= false
VB.NET中实现Drop拖放功能
在VB.NET中实现拖放操作 Implementing Drag and Drop in Visual Basic .NET Steve Hoag Visual Basic® .NET Team Microsoft Corporation September 2003 摘要:这篇文章阐述了如何在VB.NET中实现拖放操作 绪论 Windows用户一般分为两类:一类习惯用键盘
C#文件拖放操作(DragDrop File)
C#文件拖放操作(DragDrop File) 转自:http://www.csframework.com/archive/1/arc-1-20110817-1799.htm 首先将窗体的 AllowDrop=True; C# Code: //拖文件到窗体上触发DragEnter事件 private void Form1_DragEnter(object sender, Sy
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 为什么学python 为什么学习产品经理