gpt4 book ai didi

winforms - 为什么DragDrop在VS2010下不起作用?

转载 作者:行者123 更新时间:2023-12-04 13:34:14 25 4
gpt4 key购买 nike

我有一个使用UserControl的winforms应用程序。用户控件的工作是从Windows资源管理器中收集用户拖放到其上的文件,打开文件,确定类型并相应地进行处理。

此控件在Visual Studio 2008 Pro下可以正常运行。我已升级到VS 2010 Pro,但现在不起作用。是否存在我应该注意的标志或已更改的属性?

我做了一个快速演示以进行测试。该演示在2008年下可以完美运行,但在2010年下则完全不能运行。

设置:创建一个新的winform项目。添加一个用户控件。在用户控件的代码部分中设置以下代码。 (编译以使用户控件出现在工具箱中)将用户控件添加到窗体。运行该程序,并将ANY文件从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目录并手动启动程序时,它可以正常工作。当我在开发环境中时,它只是行不通,这使得调试有点困难。仍在寻找大局。

最佳答案

可能的故障原因是UAC的用户界面组件UIPI。您不能从未提升的进程拖放到提升的进程拥有的窗口。当您从启用了“兼容性”选项卡中的“以管理员身份运行该程序”选项的快捷方式启动Visual Studio时,将触发此操作。唯一的解决方法是关闭该选项。或者,如发现的那样,直接从.exe文件运行它。

关于winforms - 为什么DragDrop在VS2010下不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8123772/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com