【问题标题】:How to flag a default event for a user control in WinCE Compact Framework 3.5如何在 WinCE Compact Framework 3.5 中为用户控件标记默认事件
【发布时间】:2016-07-14 00:30:46
【问题描述】:

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

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

谢谢。

【问题讨论】:

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


    【解决方案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(以及该系列中的所有其他类型),您可能想去那里 - 但仅添加默认事件的解决方法似乎相当繁重。

    【讨论】:

    • 嗨 Evenhuis,创建 XMTA 文件后我收到错误genasm.exe(1) : error There was an error initializing MobileScan.dbDataSetTableAdapters.dbTableAdapter.get_CommandCollection. Could not load file or assembly 'System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=969db8053d3322ac, Retargetable=Yes' or one of its dependencies. The system cannot find the file specified. 删除 XMTA 文件可消除错误。这是一个已知问题吗?附言如果我将 Build Action 从 None 更改为 Content 则没有错误,但 DefaultEvent 在双击控件时没有生效
    • @LionetChen 我想不出它无法加载程序集的原因 因为 XMTA :(
    • 有人遇到了同样的问题:social.msdn.microsoft.com/Forums/en-US/…
    • @LionetChen 我也可以在这里重现这个问题,更新了答案。
    • C.Evenhuis,感谢您的精彩提示。我通过创建一个 ControlLibrary 项目解决了这个问题,并将我所有的用户控件放入其中,然后在那里使用 DesignTimeAttributes.xmta 进行调整。我将该项目添加为对我的主要项目的引用。现在一切正常,我不必四处更改天知道有多少代码。此外,这些命令是由 DataSource 工具箱生成的,因此不是我真正需要修改的地方。
    猜你喜欢
    • 1970-01-01
    • 2017-08-28
    • 1970-01-01
    • 2021-03-21
    • 1970-01-01
    • 1970-01-01
    • 2010-11-01
    • 1970-01-01
    • 2010-10-03
    相关资源
    最近更新 更多