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

C# 如何在WinCE Compact Framework 3.5中标记用户控件的默认事件,c#,winforms,compact-framework,windows-ce,.net-cf-3.5,C#,Winforms,Compact Framework,Windows Ce,.net Cf 3.5,这么多年之后,我仍然在用C#和.NET CF 3.5为Wince编写程序,我有一个自定义控件,它具有基于WinForm控件的自定义事件。我只是没有找到[DefaultEvent]属性 我假设这可以通过某种方式实现,因为如果没有这个属性,人们如何使用默认事件创建自定义控件,以便在设计器中双击?我正在使用VS2008。有什么想法吗 谢谢。据我所知,设计师(显然不是在.NET CF上运行的)使用引擎盖下的完整框架中的控件。有一些映射使用DesigntimeAttributes.xmta为.NET CF

这么多年之后,我仍然在用C#和.NET CF 3.5为Wince编写程序,我有一个自定义控件,它具有基于WinForm控件的自定义事件。我只是没有找到[DefaultEvent]属性

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


谢谢。

据我所知,设计师(显然不是在.NET CF上运行的)使用引擎盖下的完整框架中的控件。有一些映射使用
DesigntimeAttributes.xmta
为.NET CF应用自定义属性。这样,他们就不必将所有的设计人员移植到CF

显示了如何使用“查看类图”功能生成
DesigntimeAttributes.xmta
,并提供了有关编辑文件的一些附加信息

简而言之,您可以向项目中添加一个
DesigntimeAttributes.xmta
文件,如下所示:

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

MyDefaultEvent

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


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

大家好,创建XMTA文件后,我遇到了一个错误
genasm.exe(1):错误初始化MobileScan.dbDataSetTableAdapters.dbTableAdapter.get_CommandCollection时出错。无法加载文件或程序集“System.Data,Version=2.0.0.0,Culture=neutral,PublicKeyToken=969db8053d3322ac,Retargetable=Yes”或其依赖项之一。系统找不到指定的文件。
删除XMTA文件将删除错误。这是一个已知的问题吗?另外,如果我将生成操作从
None
更改为
Content
,则不会出现错误,但当控件在双击时,DefaultEvent不会生效click@LionetChen我想不出由于XMTA而无法加载程序集的原因:(有人遇到了同样的问题:@LionetChen我也可以在这里重现这个问题,更新了答案。C.Evenhuis,谢谢你的好建议。我已经通过创建一个ControlLibrary项目解决了这个问题,并将我所有的用户控件都放在其中,然后在那里调整DesignTimeAttributes.xmta。我将该项目添加为我的主项目的参考.现在一切都正常了,我不必到处更改代码,天知道有多少代码。而且这些命令是由数据源工具箱生成的,所以不是我真正需要修改的地方。