如何在 WinCE Compact Framework 3.5 中标记用户控件的默认事件

How to flag a default event for a user control in WinCE Compact Framework 3.5

这么多年后,我仍在使用 .NET CF 3.5 在 C# 中为 Wince 编写程序,并且我有一个自定义控件,其中包含基于 WinForm 控件的自定义事件。我只是似乎没有找到 [DefaultEvent] 属性。

我想这可以以某种方式完成,因为如果没有这个属性,人们将如何创建带有默认事件的自定义控件,以便在当时的设计器中双击?我正在使用 VS2008。有什么想法吗?

谢谢。

据我所知,设计器(在 .NET CF 上显然不会 运行)在后台使用完整框架的控件。有某种映射使用 DesigntimeAttributes.xmta 为 .NET CF 应用自定义属性。这样他们就不必将所有设计人员移植到 CF。

This link shows how you can generate a DesigntimeAttributes.xmta using the "View class diagram" feature, and this link 有一些关于编辑文件的附加信息。

简而言之,您将 DesigntimeAttributes.xmta 文件添加到您的项目中,内容如下:

<Classes xmlns="http://schemas.microsoft.com/VisualStudio/2004/03/SmartDevices/XMTA.xsd">
  <Class Name="MyProject.MyCustomControl">
    <DefaultEvent>MyDefaultEvent</DefaultEvent>
  </Class>
</Classes>

至于您遇到的 genasm.exe 错误,this link 包含信息和重现错误的步骤。我创建了一个 returns 和 SqlCeCommand 的方法(我假设这就是你的 CommandCollection 属性 returns )并得到相同的错误。当我将该方法更改为 return DbCommand 时,错误消失了。

如果您可以将每个 SqlCeCommand 替换为 DbCommand(以及该系列中的所有其他类型),您可能想去那里 - 但仅添加一个变通方法似乎很繁重默认事件。