2012-01-08 105 views
4

我对此感到困惑。我试图在DataGridView上执行拖放操作。没有看到任何事件发生,我用一个文本框尝试了一个简单的表单。C#WinForms DragEnter永远不会触发

我想能够从Windows资源管理器中拖动文件或文件夹。

我错过了一些东西,因为这些事件永远不会发生。我没有读到DragEvents, Windows 7 and UIPI,但我仍然无法解决这个问题。

我出来的想法,我欢迎您的建议。

public Form1() 
{ 
    InitializeComponent(); 
    this.AllowDrop = true; 
    textBox1.AllowDrop = true; 
    textBox1.DragEnter += new DragEventHandler(textBox1_DragEnter); 
    textBox1.DragDrop += new DragEventHandler(textBox1_DragDrop); 
    textBox1.DragOver += new DragEventHandler(textBox1_DragOver); 
} 

void textBox1_DragOver(object sender, DragEventArgs e) 
{ 
    e.Effect = DragDropEffects.Move; 
} 

void textBox1_DragDrop(object sender, DragEventArgs e) 
{ 
    e.Effect = DragDropEffects.Move; 
} 

void textBox1_DragEnter(object sender, DragEventArgs e) 
{ 
    e.Effect = DragDropEffects.Move; 
} 

看来,这应该工作。我在WP7 64上进行了全新安装 - 包括所有更新,我没有运行病毒或恶意软件保护,或者任何可以阻止这些事件触发的信息(据我所知)。

+1

您试图从应用程序拖动到另一个应用程序? – 2012-01-08 10:38:41

+0

表单的DragEnter事件处理程序不会触发,您没有订阅该事件。没有明显的原因为什么文本框'事件不会触发。在其上设置一个断点并将文件从Windows资源管理器拖到该框。 – 2012-01-08 11:44:46

+0

@YochaiTimmer我更新了这篇文章,我试图从资源管理器中拖动文件。 – nullable 2012-01-08 21:36:05

回答

22

我有同样的问题。这只是因为我正在从“以管理员身份运行”会话进行调试。我认为,自VISTA以来,有一种安全措施可以防止掉到特权应用程序。

+1

这是那种让你头脑发热的东西 – 2016-01-12 13:23:21

+1

你应该得到这个解决方案的奖章 – KroaX 2017-01-23 14:43:44

+0

对不起,要放一个“谢谢!!!!”的评论......这个问题是一个疯狂的行为,windows不会通知任何东西关于这个,该死的3个小时试图做一个拖放工作... – FabianSilva 2017-09-18 19:49:05

2

我发现虽然我在Visual Studio的调试模式下运行我的Forms应用程序,但它没有工作。只有当我在VS之外运行它时,它才能完美运行。据推测,这也是与Windows 7(可能更高版本)的安全性有关。

相关问题