自定义绘制文本框和按键/双击方法的问题

本文关键字:双击 方法 问题 绘制 文本 自定义 | 更新日期: 2023-09-27 18:34:25

我在Windows Mobile 6.5下正在努力解决此异常

System.NotSupportedException was unhandled
Message="Control.Invoke must be used to interact with controls created on a separate thread."
StackTrace:
in Microsoft.AGL.Common.MISC.HandleAr(PAL_ERROR ar)
in System.Windows.Forms.Control.Dispose(Boolean disposing)
in OpenNETCF.Windows.Forms.OwnerDrawnList.Dispose()
in OpenNETCF.Windows.Forms.OwnerDrawnList.Finalize()

我正在使用来自OPENNETCF的文本框列表作为外观精美的菜单。它们是自定义绘制的,但我发现在调用 DoubleClick 或 KeyDown 中的方法之前,处理/创建所有这些对象没有任何问题。在这种方法中,我启动了DataGrid和始终有效的东西。

一旦我退出主窗体,就会抛出此异常。它不会以任何方式影响应用程序,除了在使用应用程序结束时那个丑陋的 win32 异常。我错过了什么?在重绘表单之前,我正在处理这些对象。


@EDIT我设法通过不是在父类被释放后执行的 Form.Dispose 事件中处置所有这些对象来修复它,而是在 Form.Closing 事件中。我的猜测是NETCF在后台使用了一些线程,这是由windows.form处理的。

自定义绘制文本框和按键/双击方法的问题

它之所以对

你从另一个线程调用控制方法大喊大叫,是因为你允许垃圾回收器清理你的控件,而在清理 GC 时,它最终会为你调用 Dispose。它之所以说另一个线程正在调用你的控件,是因为垃圾回收器在单独的线程中运行。若要解决问题,可以使用 Using 语句或在程序关闭时直接调用窗体上的 Dispose 语句。