我在将文件从 Windows 资源管理器拖到 Windows 窗体应用程序时遇到问题。
当我拖动文本时它工作正常,但由于某种原因它无法识别文件。这是我的测试代码:
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_DragDrop(object sender, DragEventArgs e)
{
}
private void Form1_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.Text))
{
e.Effect = DragDropEffects.Copy;
}
else if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
e.Effect = DragDropEffects.Copy;
}
else
{
e.Effect = DragDropEffects.None;
}
}
}
}
AllowDrop 在 Form1 上设置为 true,正如我提到的,如果我将文本拖到表单上,它会起作用,而不是实际文件。
我使用的是 64 位 Vista ... 不确定这是否是问题的一部分。
最佳答案
问题来自Vista的UAC . DevStudio 以管理员身份运行,但资源管理器以普通用户身份运行。当您将文件从资源管理器拖放到 DevStudio 托管的应用程序上时,这与非特权用户试图与特权用户通信是一样的。这是不允许的。
当您在调试器之外运行应用程序时,这可能不会显示。除非你在那里以管理员身份运行它(或者如果 Vista 自动检测到它是一个安装程序/设置应用程序)。
你也可以 run explorer as an admin ,至少用于测试。或禁用 UAC(我不建议这样做,因为您真的想在开发期间捕获这些问题,而不是在部署期间!)
关于c# - 从 Windows 文件资源管理器拖放到 Windows 窗体上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/281706/