我有一个使用UserControl的Winforms应用程序。用户控件的任务是从Windows资源管理器中收集用户拖放到它上面的文件,打开该文件并确定其类型并相应地处理。
在Visual Studio 2008 Pro下,此控件工作得非常完美。但是当我升级到VS 2010 Pro后,它就无法正常工作了。是否有某个标志或属性已更改,需要我注意?
我创建了一个快速演示以进行测试。在2008下,此演示可以完美运行,但在2010下根本无法工作。
设置步骤:创建新的Winform项目。添加用户控件。将以下代码设置在用户控件的代码部分中(编译以使用户控件出现在工具箱中)。将用户控件添加到表单中。运行程序,并将任何文件从Windows拖放到窗体上。如果它起作用,则用户控件区域应更改颜色。
public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
this.AllowDrop = true;
this.DragDrop += new DragEventHandler(UserControl1_DragDrop);
this.DragEnter += new DragEventHandler(UserControl1_DragEnter);
this.DragLeave += new EventHandler(UserControl1_DragLeave);
}
void UserControl1_DragLeave(object sender, EventArgs e)
{
this.BackColor = Color.FromName("Control");
}
void UserControl1_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
e.Effect = DragDropEffects.Copy;
this.BackColor = Color.Blue;
}
else
{
e.Effect = DragDropEffects.None;
}
}
void UserControl1_DragDrop(object sender, DragEventArgs e)
{
this.BackColor = Color.Yellow;
}
}
我很乐意提供任何你们想到的解释或修复方法!
更新:
我已经尝试了下面列出的评论,但仍然无法正常工作。然而,我注意到它只在开发环境中失败。当我进入bin目录并手动启动程序时,它可以正常工作。但是在开发环境中它就不能正常工作,这让调试有些困难。我仍在寻找整体解决方案。