为什么两个一模一样代码属性和结构的C#程序,一个可以拖动文件到窗体,另一个却拖不上去?

这是事件经过:https://ask.csdn.net/questions/698507

简单来说,我希望实现一个效果:把文件拖到程序的窗体,然后显示出该文件的路径。然而无论我怎么试,结果都是文件拖到窗体时就禁止拖动了。然后我发了上面的帖子求救,希望知道是代码问题,还是运行环境问题。后

来版主写了一个可以完美成功运行的程序给我,我拿回去仔细分析,新建了一个窗体程序,代码、插件、属性完全复制粘贴版主的,可是很奇怪,我这一模一样的程序居然运行不了。

这个时候基本可以确定,我之所以实现不了这样的效果,不是因为外部环境(比如什么权限问题),也不是因为主要的代码写错(至少不是Form1.cs、Progam.cs这两个文件的代码错误),而是因为一些该工程的内部原因的其他原因(net版本问题也可以排除,修改过了)。可至于到底是什么原因,我却一无所知

所以我把版主的原工程文件(工程名Q698507),和我新建一个工程然后完全复制粘贴版主的工程里的代码的文件(工程名m2),打包起来,放在下方,希望能分析一下原因~~

https://pan.baidu.com/s/1jVUkrFz31lBgMaLfNxPOEg

3个回答

的确是事件和事件处理的代码关联起来。
我看了下你的代码
m2/m2/Form1.Designer.cs
里面
this.AllowDrop = true;
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Controls.Add(this.label1);
this.Name = "Form1";
this.Text = "Form1";
this.Load += new System.EventHandler(this.Form1_Load);
this.DragDrop += Form1_DragDrop; //加上
this.DragOver += Form1_DragOver; //加上
this.ResumeLayout(false);
this.PerformLayout();

caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复vainquit: 对的,你双击按钮、窗体编写事件,是自动关联的,但是你复制粘贴的代码,就要自己关联了。
接近 2 年之前 回复
vainquit
vainquit 初学者现在才知道还有个Designer.cs。。。十分感谢两次援助,我再好好研究研究~~
接近 2 年之前 回复

你用我的程序编译(而不是运行exe),可以么?
你的vs版本是什么?manifast有修改过么?是32bit还是64bit的系统。

另外,你是直接复制粘贴的么?有没有把事件和事件处理的代码关联起来。
比如
this.DragOver += Form1_DragOver;
这个有没有写(或者在属性面板里有没有配置)

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐