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

时间:2016-07-14 00:30:46

标签: c# winforms compact-framework windows-ce .net-cf-3.5

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

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

感谢。

1 个答案:

答案 0 :(得分:1)

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

This link显示了如何使用“查看类图”功能生成DesigntimeAttributes.xmtathis 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包含信息以及重现它的步骤。我创建了一个返回SqlCeCommand的方法(我假设你的CommandCollection属性返回的内容)并得到相同的错误。当我改变该方法以返回DbCommand时,错误消失。

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