【问题标题】:Handling wpf drop of external programs处理外部程序的 wpf drop
【发布时间】:2020-06-10 13:15:28
【问题描述】:

我正在尝试提出一个想法,其中一个重要概念是删除程序、书签等。我有我认为的要点,但我没有收到任何信息

private void Border_Drop(object sender, DragEventArgs e)
{            
    FileInfo[] files = (FileInfo[])e.Data.GetData(DataFormats.FileDrop);

    foreach (FileInfo file in files)
    {
        Writer.Text += file.FullName;
    }
}

虽然我的文本块从未填充过?我想获取File 的所有属性,例如 FullNameNameExtensionDirectoryName等。

关于从这里去哪里的任何指示?我一直在尝试阅读该事件的 MSDN,但没有任何内容出现,并且我搜索了 stackoverflow,但没有任何内容适用于我的案例。

【问题讨论】:

标签: c# wpf drag-and-drop


【解决方案1】:

一个可能的原因是您将事件处理程序附加到了错误的控件。尝试将事件处理程序附加到表单,或者如果这不起作用,则附加到文本块。

我还强烈建议您进行一些调试。 Place a breakpoint 在事件处理程序中查看它是否被调用,如果是,它会发生什么。

【讨论】:

  • 谢谢,我会添加断点,我总是忘记他们先是前端 Web 开发人员,然后是后端,现在是软件
【解决方案2】:

WPF 有两种不同的路由事件处理机制:冒泡和隧道。冒泡是执行此操作的“正常”方式,而隧道是当您在事件名称中看到所有这些 PreviewThis 和 PreviewThat 时。有可能另一个控件已将事件标记为已处理,因此您在事件处理程序中看不到它。

如果您需要有关 WPF 拖放的文档,请阅读 this

如果你需要一些关于这个主题的真正定制的、非常低级的东西,你也可以阅读Object Linking and Embedding 这可能是在 Word 中实现拖放的方式,以便你可以将图像和 Excel 表格拖入Word 文档,它们将本机显示。但是要使用它,您可能需要使用一些 Win32 API 调用,这有点令人讨厌。

【讨论】:

  • 感谢您的建议,我去看看
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-22
  • 1970-01-01
  • 2017-07-04
  • 2013-08-22
  • 1970-01-01
相关资源
最近更新 更多