代码之家  ›  专栏  ›  技术社区  ›  xsl Fredrik Hedblad

Compact Framework:未能在控件中使用InputPanel

  •  3
  • xsl Fredrik Hedblad  · 技术社区  · 17 年前

    我开发了一个使用PDA的控件 InputPanel 与用户交互。守则的有关部分如下:

    namespace MyNamespace
    {
         // ...
         using Microsoft.WindowsCE.Forms;
         // ...
    
         public class MyControl
         {
             // ...
             public InputPanel MyPanel { get; set; }
             // ...
         }
    }
    

    每当我试图拖动 Control Form

    System.IO.FileNotFoundException:无法 不加载文件或程序集 Microsoft.WindowsCE.Forms, 版本=2.0.0.0,区域性=中性,
    PublicKeyToken=969db8053d3322ac或 找不到指定的文件。文件 名称:Microsoft.WindowsCE.Forms, 版本=2.0.0.0,区域性=中性, PublicKeyToken=969db8053d3322ac

    如果我移除 输入面板 来自 MyControl 我可以把它添加到 类型 没有任何问题。一旦 控制 添加后,我可以再次添加行,整个程序编译并运行良好。

    一旦表格与 控制 是在设计器中查看的,它会崩溃,并出现与上面所述类似的错误,我无法将其添加到任何其他文件中 类型

    我正在使用VisualStudio2008SP1和WindowsMobile6SDK。


    所以我的问题是:有没有人遇到过类似的问题或找到了解决方法?


    编辑:放弃并将父窗体用作属性。表单实现了IIInputPanel,它基本上是一个带有InputPanel getter的接口。尽管如此,ctake的回答还是很有见地,把我介绍给了XMTA。

    1 回复  |  直到 17 年前
        1
  •  3
  •   ctacke    17 年前

    这是因为桌面没有SIP(inputpanel),因此设计者无法显示它。您需要将XMTA中的DesktopCompatible属性设置为false。

    编辑:我想我应该扩展这个答案。设置DesktopCompatible属性将阻止设计器直接查询属性,但如果控件中有任何代码可以调用该属性(因此,如果设计器中运行的任何代码都可能执行CE特定的代码),则还必须添加代码以防止此情况发生。通过Environment.OSVersion.Platform检查当前平台运行得相当好,尽管还有其他更复杂的机制来确定您是否也在设计器中。

    推荐文章