我发现这个CodeProject article介绍了如何在将附件从Microsoft Outlook拖到.net控件中时获取数据。
但是,当将其他类型的数据拖动到控件中时,代码会抛出异常,因此我只想在从Outlook中拖动数据的特定情况下使用此方法。
不幸的是,我看不到一种明显的方法来确定DragDrop事件的来源,因此实际上无法确定何时从Outlook拖动文件。
我错过了一些明显的东西吗?
答案 0 :(得分:2)
无法准确发现拖动数据的来源,这是D + D的一个设计特征。它有助于将拖动源与接收数据的进程完全隔离。在Windows中非常重要,它可以简化从64位进程到32位进程的拖拽。它完全避免了让进程正确互操作的许多麻烦。只有数据很重要。
您需要在DragEnter事件处理程序中筛选拖动的数据,并确保它是您知道如何处理的数据。其主要协议是e.Data.GetDataPresent(),它告诉您数据格式正确。除非你对所看到的内容感到满意,否则不要设置e.Effect。
然后DragDrop事件处理程序应该接受数据。获得异常并不是完全出乎意料的,特别是如果你没有在DragEnter中完全屏蔽它。否则不会导致程序崩溃,吞下异常并且没有任何反应。使用Debug + Exceptions调试代码,勾选CLR异常的Thrown复选框。