pictureBox不能触发DragEnter事件原因

项目中有时候需要将一些文件拖拽进来打开,比如MapGIS 或者ARCGIS的地图显示试图中可以直接打开相应拖拽进来的文件。小编今天尝试拖拽打开图片,但是发现DragEnter事件并没有被触发。原来发现需要属性AllowDrop的支持。

开发环境:.Net FrameWork 3.5

IDE:        Visual Studio 2010

具体代码如下:

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

        private void pictureBox1_DragEnter(object sender, DragEventArgs e)
        {
            if (e.Data.GetDataPresent(DataFormats.FileDrop))
            {
                e.Effect = DragDropEffects.All;
            }
        }

        private void pictureBox1_DragDrop(object sender, DragEventArgs e)
        {
            //获取第一个元素
            string FileName = (e.Data.GetData(DataFormats.FileDrop, false) as string[])[0];
            try
            {
                pictureBox1.Load(FileName);
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

        }

知识点1:

 pictureBox1.AllowDrop = true;

解决pictureBox不能拖拽的问题。

知识点2

(e.Data.GetData(DataFormats.FileDrop, false) as string[])

获取拖拽的文件的完整路径

源码下载地址:点击这里下载

时间: 2024-08-09 06:34:09

pictureBox不能触发DragEnter事件原因的相关文章

DICOM:剖析Orthanc中的Web Server,Mongoose之“连接请求触发的事件序列”(二)

背景: Orthanc是本专栏中介绍过的一款新型DICOM服务器,具有轻量级.支持REST的特性,可将任意运行Windows和Linux系统的计算机变成DICOM服务器,即miniPACS.Orthanc内嵌多种模块,数据库管理简单,且不依赖于第三方软件.因此通过剖析Orthanc源码可以学习到搭建DICOM系统中的各个环节,例如SQLite嵌入型数据库.GoogleLog日志库.DCMTK医学DICOM库,以及近期要介绍的开源Web Server,Mongoose. 题记: 近期计划参照官网剖

IOS自带输入法中文不触发KEYUP事件导致vue双向绑定错误问题

先上图: 可以看到输入框中的内容和弹出框的内容不一致, <input class="am-fr labRight" id="txcode" type="text" placeholder="请输入纳税人识别号" v-model="invBuyer.TaxCode" /> 文本框使用的是vue的v-model双向绑定,在android中是ok的,在IOS上不行, 导致问题出现的原因是IOS自带输入

DropDownList 控件不能触发SelectedIndexChanged 事件

相信DropDownList 控件不能触发SelectedIndexChanged 事件已经不是什么新鲜事情了,原因也无外乎以下几种: 1.DropDownList 控件的属性 AutoPostBack="True" 没有写: 2.DropDownList 控件的数据绑定没有放在if (!Page.IsPostBack) 里面: 3.DropDownList 控件选定项的value 值只有在发生变化时,才将信息发往服务器: 有人问 (1)AutoPostBack="True&

Android ListView无法触发ItemClick事件

Android ListView无法触发ItemClick事件 开发中很常见的一个问题,项目中的listview不仅仅是简单的文字,常常需要自己定义listview,自己的Adapter去继承BaseAdapter,在adapter中按照需求进行编写,问题就出现了,可能会发生点击每一个item的时候没有反应,无法获取的焦点.原因多半是由于在你自己定义的Item中存在诸如ImageButton,Button,CheckBox等子控件(也可以说是Button或者Checkable的子类控件),此时这

element-ui 点击编辑弹出dialog组件中select组件绑定值改变,但是不触发change事件

代码结构如下: 现象视频如下: 现象原因:经过排查发现 此时点击操作不触发chang事件,后台响应数据中没有订单取消原因orderCanleRemark字段,此时导致不触发change事件, 解决方案:方案1,:让后台配合响应该字段,无论是否为空都响应该字段 方案2:在后台响应数据赋值给,this.form之前,手动添加该字段到后台响应数据中 代码如下: 原文地址:https://www.cnblogs.com/liujiazhu/p/8649810.html

UWP忽略短时间内重复触发的事件

原文:UWP忽略短时间内重复触发的事件 原链接:UWP忽略短时间内重复触发的事件 - 超威蓝火 做移动端开发的可能都会遇到这种需求,当用户点击一个按钮之后,由于没有异步,或者设备性能很差等等原因,程序卡住了.但是用户不知道是咋回事啊,就开始狂点按钮,结果请求很多次资源,或者构造了很多重复视图.安卓上有很多介绍如何忽略重复点击的情况,uwp里我好像还没找到,那接下来就说一说我的方法吧. 首先是官方最常用的,从Windows诞生之初用到现在的,点击按钮之后把他Disable掉,等完成了在Enable

Unity3D导入外部任务模型无法触发鼠标事件解决方案

前几日 在做U3D测试的时候 导入了网上的一个人物模型 但是后来发现无论如何该模型都无法响应诸如:OnMouseDown 这些鼠标事件 又用U3D自带的水管工做了测试 发现不是我系统的问题= = 水管工对鼠标事件还是有反应的 遂百度之 查到的解决方法是 在Project窗口中选中导入FBX模型,在右边的Inspector中选中Generate Colliders 说是因为U3D默认导入的模型没有启动碰撞机Colliders 但是------ 我在确定模型的Generate Colliders被选

Dynamics CRM Form表单中通过javascript抓取触发change事件字段的属性名

通过以下这段代码能够抓取到change的事件源,从而推断出是哪个属性字段触发的事件, function change(pContext) {var fieldName=pContext.getEventSource().getName(); } 在字段的事件设置中须要将下框中复选框的勾勾上.很多其它的信息可參见SDK.

Spring透过ApplicationListener来触发contextrefreshedevent事件

Spring通过ApplicationListener接口来触发contextrefreshedevent事件在开发时有时候需要在整个应用开始运行时执行一些特定代码,比如初始化环境,准备测试数据.加载一些数据到内存等等. 在Spring中可以通过ApplicationListener来实现相关的功能,加载完成后触发contextrefreshedevent事件(上下文件刷新事件) 例如:定时任务 上述中解决了一个问题: 会存在一个问题,在web 项目中(spring mvc),系统会存在两个容器