【问题标题】:C# WinForms DragEnter never firesC# WinForms DragEnter 从不触发
【发布时间】:2012-02-05 07:07:55
【问题描述】:

我对此感到困惑。我尝试在DataGridView 上实现拖放。没有看到任何事件被触发,我尝试了一个带有文本框的简单表单。

我希望能够从 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 上进行了全新安装 - 在所有更新中,我没有运行病毒或恶意软件保护,或任何(据我所知)可能阻止这些事件触发的东西。

【问题讨论】:

  • 您正试图从您的应用程序拖动到另一个应用程序?
  • 表单的 DragEnter 事件处理程序不会触发,您没有订阅该事件。文本框的事件不会触发没有明显的原因。在其上设置断点并将文件从 Windows 资源管理器拖到框中。
  • @YochaiTimmer 我更新了帖子,我正在尝试从资源管理器中拖动文件。
  • @HansPassant 我在设计器中连接了这个。我已将其从示例中删除。这些事件都不会触发 - 这是我的问题。
  • 好吧,你当前的 sn-p 只是没有重现问题,也没有明显的失败解释。在另一台机器上试试。顺便说一句,有一个名为“form1”的构造函数很奇怪。样板文件始终是 Form1,大写 eff。 总是复制粘贴一个sn-p,不要手动输入。

标签: c# winforms windows-7 drag-and-drop


【解决方案1】:

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

【讨论】:

  • 这种东西让你头疼
  • 这个解决方案你应该获得奖牌。
  • 不好意思说一句“谢谢!!!!”评论...这个问题是一种公认​​的行为,Windows 不会通知任何有关此的事情,该死的 3 小时试图使拖放工作...
  • 我完全同意这种说法这是让你头疼的东西;我花了几个小时弄清楚为什么事件没有触发......我正在从 以管理员身份运行 会话进行调试。 (我使用的是 Windows 10)
  • 感谢您为我节省了三个小时的设计时间!
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2016-10-18
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 2011-02-07
    • 1970-01-01
    • 2015-05-03
    • 1970-01-01
    相关资源
    最近更新 更多