我开发了一个使用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”
如果我从
InputPanel
中删除了MyControl
行,则可以毫无问题地将其添加到Form
中。添加了Control
后,我可以再次添加该行,整个程序可以编译并正常运行。一旦在设计器中查看了带有
Control
的表单,它就会崩溃,并产生与上述类似的错误,并且我无法将其再次添加到其他Form
中。我将Visual Studio 2008 SP1与Windows Mobile 6 SDK一起使用。
所以我的问题是:有人遇到过类似的问题或找到了解决方法吗?
编辑:放弃并使用父窗体作为属性。该窗体实现了IInputPanel,它基本上是一个与InputPanel getter的接口(interface)。但是,ctake的回答确实很有见识,并向我介绍了XMTA。
最佳答案
这是因为台式机没有SIP(输入面板),因此设计人员无法显示它。您需要将XMTA中的DesktopCompatible属性设置为false。
编辑:我想我应该扩展这个答案。设置DesktopCompatible属性将阻止设计器直接查询该属性,但是如果控件中有任何可以调用它的代码(因此,如果将在设计器中运行的任何代码都可以执行CE特定的代码),则还必须添加代码来防止这种情况。通过Environment.OSVersion.Platform检查当前平台的效果很好,尽管还有其他更复杂的机制也可以确定您是否在设计器中。