- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个可以在我的窗体周围拖动的 UserControl。当控件被意外拖离我的表单并进入桌面时,我得到了第一次机会异常(例如):
A first chance exception of type 'System.Runtime.InteropServices.COMException' occurred in System.Windows.Forms.dll
Additional information: Invalid FORMATETC structure (Exception from HRESULT: 0x80040064 (DV_E_FORMATETC))
当我开始拖放过程时,我传入了一个 Control 类型的对象。它不是可序列化的,我也不希望它是。有没有办法解决这个问题,或者是否有处理将对象拖到主机窗体之外的方法?
调用堆栈:
> System.Windows.Forms.dll!System.Windows.Forms.DataObject.GetDataIntoOleStructs(ref System.Runtime.InteropServices.ComTypes.FORMATETC formatetc, ref System.Runtime.InteropServices.ComTypes.STGMEDIUM medium) + 0x175 bytes
System.Windows.Forms.dll!System.Windows.Forms.DataObject.System.Runtime.InteropServices.ComTypes.IDataObject.GetDataHere(ref System.Runtime.InteropServices.ComTypes.FORMATETC formatetc, ref System.Runtime.InteropServices.ComTypes.STGMEDIUM medium) + 0x70 bytes
System.Windows.Forms.dll!System.Windows.Forms.DataObject.System.Runtime.InteropServices.ComTypes.IDataObject.GetData(ref System.Runtime.InteropServices.ComTypes.FORMATETC formatetc, out System.Runtime.InteropServices.ComTypes.STGMEDIUM medium) + 0x152 bytes
[Native to Managed Transition]
这是另一个堆栈,但 VS2010 挂起,所以我无法复制和粘贴它。
最佳答案
我不清楚这个异常是如何触发的,桌面应该对你的控制没有用。鼠标光标应显示“不能放在此处”的形状。然而,在 D+D 期间的第一次机会异常是没有意义的,它们被吞没并且不会以其他方式影响操作。您只能看到它们,因为您附加了调试器。
如果您真的想深入了解它,请使用调试 + 异常,勾选公共(public)语言运行时异常的抛出框。调试器将在引发异常时停止。它很可能是在 Winforms 管道代码中引发的,除非启用引用源,否则您将无法查看源代码。如果您无法弄清楚,请在您的问题中发布堆栈跟踪。请务必复制整个,必要时滚动它以获得顶部激活框架。
但重申一下,这在实践中应该不是问题。用户应该看到“无法放下”鼠标光标,异常会在不终止程序的情况下被吞下。
关于不可序列化对象上的 C# DoDragDrop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5275729/
我有一个可以在我的窗体周围拖动的 UserControl。当控件被意外拖离我的表单并进入桌面时,我得到了第一次机会异常(例如): A first chance exception of type 'S
我真的很难在 Silverlight 4 中获得一个简单的拖放示例。 这是我所拥有的: XAML 代码隐藏 public partial c
在 WPF 中,我想使用右键单击来启动拖放。类似于 Windows 资源管理器,右键单击,稍微移动,你会得到装饰器来指示操作中的拖放。不要移动,松开按钮时会出现上下文菜单。 我已经启动了这一切,但是当
WPF DragDrop.DoDragDrop方法有 DragSource作为它的第一个参数。 有没有办法获得这个DragSource OnDrop 中的对象或其他拖放事件? 最佳答案 简短的回答是否
我已经为此苦苦挣扎了一段时间 我的应用程序包含一个 ListView ,填充了位于服务器上的文件名。 我正在尝试实现拖放功能,以便用户可以将文件从我的应用程序拖到他/她的本地计算机中。 为此,我首先将
我想知道在 Windows 窗体应用程序中调用 DoDragDrop 方法的控件是否有任何区别。 我有一个带有两个 PictureBox 控件的窗体。一个可以拖动,另一个的 AllowsDrop 属性
在类库中的定义为: 复制代码代码如下: [UIPermissionAttribute(SecurityAction.Demand, Clipboard = UIPermission
我正在将我的应用程序实现为拖动源。当我调用 DoDragDrop(Win32 调用,而不是 MFC)时,它进入模式循环,并且在 DoDragDrop 返回之前我不会在主窗口中收到重绘消息。不幸的是,如
我使用 DragDrop.DoDragDrop 将文件从我的 C# WPF 应用程序复制到 Windows 资源管理器。但是,文件的实际复制导致我的 WPF 应用程序卡住,直到复制完成。此复制操作可能
通过 DragDrop.DoDragDrop(...) 开始拖放操作后,不再触发 MouseMove 事件。我什至尝试过 AddHandler(Window.MouseMoveEvent, new M
我正在像这样拖放外部应用程序: string[] files = new string[/* */]; // get files DataObject o = new DataObject(DataF
我已经扩展了 Canvas {System.Windows.Controls} 和可拖动到 Canvas 中的项目。在拖动过程中,我有 OnDragOver 事件,当用户单击并按住鼠标中键时,我会在其
我有一个 WPF 应用程序,当拖动操作开始时,它在某些计算机上崩溃并出现 AccessViolationException。 困难在于它只发生在我们构建服务器的构建上,当我在 Visual Studi
在我的 WPF 应用程序中,我实现了拖放并将我的 PNG 图像放在 DataObject 中,然后将其传递给 DoDragDrop 方法。关于我可以放弃哪些应用程序,这似乎是偶然的。 Excel ye
我目前正在开发一个带有 MapPoint-Control 的应用程序,这让我很难过。从 mappoint 也使用的线程启动 DoDragDrop 后,我总是在几秒后收到来自 mappoint 的对话框
我的应用程序有一个简单的功能,它连接到 Excel 并在它们之间进行拖放操作。具体来说,我只是从我的应用程序中获取一些文本值,将它们拖到 Excel 中,然后放下。 这在 90% 的时间都有效,但奇怪
我是一名优秀的程序员,十分优秀!