我有一个使用UserControl的winforms应用程序。用户控件的工作是收集用户从Windows资源管理器中删除的文件,打开文件,确定类型并相应地处理它。
此控件在Visual Studio 2008 Pro下完美运行。我升级到VS 2010专业版,现在,它不起作用。是否有一个标志或属性已经改变,我应该知道??
我做了一个快速演示来测试。这个演示在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;
}
}
我愿意接受你们可能想到的任何解释或解决方法!
更新
我使用下面列出的评论进行了测试。 STILL不起作用。但是,我注意到它只在开发环境中失败。当我进入bin目录并手动启动程序时,它工作正常。当我在开发环境中时它只是不起作用,这使得调试有点困难。仍在寻找重大修复。
答案 0 :(得分:13)
这里可能出现的故障原因是UIPI,即UAC的用户界面组件。您无法从非提升的进程拖动并拖放到升级进程所拥有的窗口。当您从启用了“兼容性”选项卡中的“以管理员身份运行此程序”选项的快捷方式启动Visual Studio时,将触发此操作。唯一的解决方法是关闭该选项。或者直接从.exe文件运行它,如您所发现的那样。