所以经过这么多年我仍然在使用.NET CF 3.5在C#中为Wince编写程序,并且我有一个基于WinForm控件的自定义事件的自定义控件。我似乎没有找到[DefaultEvent]属性。
我认为这可以以某种方式完成,因为如果没有这个属性,那么人们如何使用默认事件创建自定义控件,以便当时双击设计器?我正在使用VS2008。有什么想法吗?
感谢。
答案 0 :(得分:1)
据我所知,设计器(显然不能在.NET CF上运行)使用完全框架下的控件。有一种映射使用DesigntimeAttributes.xmta
为.NET CF应用自定义属性。这样他们就不必将所有设计师移植到CF.
This link显示了如何使用“查看类图”功能生成DesigntimeAttributes.xmta
,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包含信息以及重现它的步骤。我创建了一个返回SqlCeCommand
的方法(我假设你的CommandCollection
属性返回的内容)并得到相同的错误。当我改变该方法以返回DbCommand
时,错误消失。
如果您可以将每个SqlCeCommand
替换为DbCommand
(以及来自该系列的所有其他类型),您可能希望去那里 - 但是仅仅添加默认事件的解决方法似乎相当繁重。