【问题标题】:How can I allow Drag and Drop from Windows Explorer into a C# WPF application?如何允许从 Windows 资源管理器拖放到 C# WPF 应用程序中?
【发布时间】:2011-02-22 10:17:55
【问题描述】:

我知道关于这个主题有很多答案,但我仍然无法让它发挥作用。我已经在应用程序的每个级别的每个控件上启用了 AllowDrop,并试图在每个控件上捕获 DragEnter 和 Drop,但无济于事。我可以在应用程序中拖放项目,但任何时候我尝试从 Windows 资源管理器或桌面等中引入一些东西时,它都会给我“否”图标。有什么想法我可能做错了吗?

这是我正在做的一个例子。仍然不显示移动光标,也不会点击 MainWindow_DragEnter 函数。

    namespace WpfApplication1
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            this.AllowDrop = true;
            this.DragEnter += new DragEventHandler(MainWindow_DragEnter);
        }

        void MainWindow_DragEnter(object sender, DragEventArgs e)
        {
            e.Effects = DragDropEffects.Move;
        }
    }
}

【问题讨论】:

    标签: c# wpf drag-and-drop


    【解决方案1】:

    我相信我已经解决了我的问题。我以管理员身份运行 Visual Studio。当它启动我的应用程序时,它无法识别来自资源管理器的拖动,因为资源管理器在用户模式下运行。希望这个愚蠢的举动可以帮助其他人。

    【讨论】:

    【解决方案2】:

    AllowDrop 仅激活使用拖放的可能性。 你必须自己处理。

    如您所见,具有 AllowDrop 的对象也具有事件 DragEnter、DragOver、DragLeave。 你必须编写你想要在这个时刻发生的事情。 您可以更改光标,接受丢弃的项目等。 但是你必须自己做。例如。寻找 DragEventArgs.Effects。

    我刚刚打开了一个新的 WPF 应用程序,选择了窗口,启用了 AllowDrop,添加了事件处理程序 DragEnter 并放在那里:e.Effects = DragDropEffects.Move; 适合我。

    【讨论】:

    • 我试过这个,结果是一样的。我在 MainMindow_DragEnter 函数中放置了一个断点,但是当我从资源管理器窗口中拖动某些东西时它永远不会被击中。光标仍然是“否”符号。
    • 谢谢,如果我不在 Visual Studio 中的管理员模式下,您的解决方案会运行良好。
    • 感谢 Seabass__ 我对这个“管理员”问题感到绝望!
    猜你喜欢
    • 2020-10-29
    • 2011-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-02
    • 2011-04-01
    相关资源
    最近更新 更多