.Net Micro Framework本身支持WPF界面开发,但是对国内用户来说,WPF开发相对比较陌生,并且.Net Micro Framework对此功能的支持并不完善,Button、TextBox、ListBox、PictureBox等等基本控件并不支持,所以要想在.Net Micro Framework上开发出一套相对复杂的窗体界面还是比较困难的。
System.Windows.Form库就是在这种背景下开发出来的,它提供的接口和控件,和.Net Framework及.Net Compact Framework保持兼容,也可以说是.Net Compact Framework的一个窗体子集(不仅仅是子集,有写功能略有扩展,如Graphics类支持图片透明、渐变、圆角矩形绘制等等方法)。
由于.Net Micro Framework的IDE开发环境并不支持所见即所得的窗体设计功能(以后有时间可以为MF开发这一功能),所以我们可以取巧,用.Net Framework和.Net Compact Framework开发环境设计窗体,然后把相关窗体文件(如Form1.cs和Form1.designer.cs文件)直接导入到.Net Micro Framework工程中,稍加删减即可为.Net Micro Framework所用。
System.Windows.Form目前包括Button、TextBox、ListBox、ComboBox、CheckBox、GroupBox、RadioButton、PictureBox、ProgressBar、VScrollBar、HScrollBar等11种常用控件,此外还提供了MessageBox方法。
包含两类窗体、普通窗体及模式窗体,含义和windows平台相同。
此外System.Windows.Form提供两种界面风格,上面的计算器显示的是SideShow风格的窗体,缺省风格和.Net Compact Framework一致(如下图):
值得一提的是,System.Windows.Form完美支持中文,提供了Arial两种类型的字体(规则、粗体),含有3000多个常用汉字及字符。其使用方法和.Net Framework一致,如果您一致使用缺省字体,您会忽略还有字体设置这一说法的存在。不过考虑到.Net Micro Framework用到资源有限的设备上,所以还是把字体库进行了剥离,可以根据需要自行增删字体(默认字库的大小为546k)。
下面的图例就是基于System.Windows.Form库开发的应用程序。
System.Windows.Form库支持多窗体,并且支持软键盘,所以考虑到窗体关闭、切换等操作,故引入了任务栏(和Windows Mobile的任务栏有些类似),相关功能如下图所示。
为了便于说明System.Windows.Form库的方便性,我们试着比较一下.Net Micro Framework默认窗体开发和用System.Windows.Form库开发的代码区别。
.Net Micro Framework默认窗体程序包含两个文件,一个是按钮配置程序GPIOButtonInputProvider.cs,相关代码如下:
- using Microsoft.SPOT;
- using Microsoft.SPOT.Input;
- using Microsoft.SPOT.Hardware;
- using Microsoft.SPOT.Presentation;
- namespace MFWindowApplication1
- {
- public sealed class GPIOButtonInputProvider
- {
- public readonly Dispatcher Dispatcher;
- private ButtonPad[] buttons;
- private DispatcherOperationCallback callback;