C# 有没有办法从Windows获取拖动启动事件?

C# 有没有办法从Windows获取拖动启动事件?,c#,wpf,drag-and-drop,mouseevent,C#,Wpf,Drag And Drop,Mouseevent,我有一个简单的拖放实现: private void appt_Drop(object sender, DragEventArgs e) { Outlook.Explorer oExplorer = OlApp.ActiveExplorer(); Outlook.Selection oSelection = oExplorer.Selection; foreach (object _obj in oSelection) { if (_obj is

我有一个简单的拖放实现:

private void appt_Drop(object sender, DragEventArgs e)
{
    Outlook.Explorer oExplorer = OlApp.ActiveExplorer();
    Outlook.Selection oSelection = oExplorer.Selection;

    foreach (object _obj in oSelection)
    {
        if (_obj is Outlook.AppointmentItem)
        {
            after = (Outlook.AppointmentItem)_obj;
        }
    }
    << send it where it needs to go >>
}
private void appt_Drop(对象发送方,DragEventArgs e)
{
Outlook.Explorer oExplorer=OlApp.ActiveExplorer();
Outlook.Selection oSelection=oExplorer.Selection;
foreach(对象_obj在oSelection中)
{
如果(_obj是Outlook.AppointmentItem)
{
after=(Outlook.AppointmentItem)\u obj;
}
}
>
}

但我现在想添加一个“drop here”覆盖。问题是,我打算让用户将Outlook约会放到我的应用程序中,但我不知道当拖动开始事件发生在我的应用程序之外时如何点击它。尽管我可能会尝试,谷歌还是让我失望了(或者我已经生锈了)。

你不必担心拖动启动,只需处理DragEnter/DragOver/Drop事件:

  • 在控件中,设置AllowDrop=“True”
  • 为DragEnter和Drop事件添加事件处理程序,如果您想提供有趣的反馈,还可以选择为DragOver添加事件处理程序

要获取约会的文本,可以使用e.Data.GetData(“text”)。不幸的是,如何获取其他约会数据似乎没有文档记录。e、 Data.GetData(“RenPrivateAppointment”)听起来很有趣(另请参见)。

我正在处理这些问题,但只有当它们进入我的窗口时才会出现“拖入”和“拖出”的情况,但我希望我的应用程序能够显示覆盖图,即使它们仍在Outlook窗口中拖出。我怀疑这是否可能。我很担心,虽然我正在研究系统运行时互操作,看看是否有什么东西暴露了操作系统事件。至于你答案的最后一部分,问题中我的代码从约会中获取数据——你实际上不是从被删除的对象中提取数据,而是从Outlook中“选中”的对象中获取数据,当你拖动约会时,它总是被选中。