3

我开发了一个使用 PDAInputPanel与用户交互的控件。代码的相关部分如下:

namespace MyNamespace
{
     // ...
     using Microsoft.WindowsCE.Forms;
     // ...

     public class MyControl
     {
         // ...
         public InputPanel MyPanel { get; set; }
         // ...
     }
}

每当我尝试将 拖到ControlaForm时,都会收到以下错误:

System.IO.FileNotFoundException:无法加载文件或程序集“Microsoft.WindowsCE.Forms,Version=2.0.0.0,Culture=neutral,
PublicKeyToken=969db8053d3322ac”或其依赖项之一。该系统找不到指定的文件。文件名:'Microsoft.WindowsCE.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=969db8053d3322ac'</p>

如果我从中删除该InputPanel行,MyControl我可以Form毫无问题地将其添加到。添加后,我可以再次Control添加该行,整个程序编译并正常工作。

一旦Control在设计器中查看带有 的表单,它就会崩溃并出现与上述类似的错误,我无法Form再次将其添加到任何其他表单中。

我正在使用带有 Windows Mobile 6 SDK 的 Visual Studio 2008 SP1。


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


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

4

1 回答 1

3

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

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

于 2009-04-08T12:50:16.047 回答