无法在VS 2008 Designer - .NETCF中显示自定义控件

时间:2009-05-27 16:45:55

标签: visual-studio-2008 compact-framework rendering user-controls designer

我在Visual Studio中的.NETCF Windows移动项目中显示自定义(继承)控件时遇到问题。控件在设计器表面上显示为灰色框,其中写有类名。

作为测试用例,我将一个简单的控件定义为:

public class ucButton2 : Button
{
}

应该就像一个按钮,但它给出了有趣的行为。

过去我用Design Time Attributes文件解决了这个问题或类似的问题。所以我将DTA.xmta文件包含在以下内容中

<?xml version="1.0" encoding="utf-16"?>
<Classes xmlns="http://schemas.microsoft.com/VisualStudio/2004/03/SmartDevices/XMTA.xsd">
  <Class Name="MyProject.CustomControls.ucButton2">
    <Description>Testbutton</Description>
    <DesktopCompatible>true</DesktopCompatible>
  </Class>
</Classes>

现在事情变得非常奇怪了 - 我开始从不相关的类型化数据集文件中的genasm.exe中获取编译错误。

根据上一篇评论中的建议: http://www.simonrhart.com/2008/02/upgrading-your-solutions-to-visual.html

我将DTA.xmta更改为“Embedded Resource”的构建操作

现在应用程序已编译,但没有任何更改 - 设计器表面仍显示一个带有类名的空框。

我已经关闭并重新打开Visual Studio,以确保没有发生奇怪的缓存 - 同样的行为。

像我说的那样,过去xmta文件已经解决了这类问题。但这次不是。但与此同时,在过去,添加xmta文件并不会导致genasm.exe在编译时被barf。在我的其他项目中,我的xmta文件的构建操作为“none”,而不是“embedded resource”。

在运行时,一切正常。这纯粹是一个设计时间问题。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

我会说你将DesktopCompatible(true)作为自定义属性添加到控件中。请参阅:this post

答案 1 :(得分:0)

这是因为智能设备控件设计器不支持可视继承 - 或者我应该说它不能很好地显示它。无论是代码缺陷还是设计,它都不像桌面.NET控件设计器那样工作。有时它会显示它,有时它不会显示它。

但是您的自定义控制代码仍然有效,它并不总是按预期显示。