在本人编写的几个上位机程序中,程序界面部分多数使用WinForm作为开发框架。WinForm框架的基本容器单位为窗体,即“Form”。每个窗体中包含了若干个不同种类的控件,即“Control”。控件分为卡塔尔世界杯ray雷竞技在线平台类、容器类等。窗体和控件执行了不同的事件,如“单击”、“右击”等,会触发相应的回调函数,以此实现交互功能。创建每个窗体后,按照框架预定义的规则会生成Form.designer.cs及Form.cs两个不同的文件。这两个文件实质上属于同一个类(Class),由partial关键词划分。前者主要包含了该窗体及其中的控件的声明和定义代码,由框架自动生产。后者为使用者实际编码处理具体逻辑区域。
使用WinForm的好处是在界面外观要求不高的情况下,可以十分快速地在所见即所得式的界面编辑器通过拖拽控件的方式实现界面布局。然后在控件属性页中静态地定义每个控件的各项属性,在控件事件页中指定控件能够产生的每个动作对应的回调函数。以上方便之处,得益于WinForm框架预先已对这些控件作出了标准化处理。
当需要实现较为高级的界面功能时,WinForm的弱点就会凸显出来。如当程序运行于不同分辨率屏幕的时候,界面往往不能与在生产环境中保持一致。当某个控件中的文本内容过长时,会超出容器边界或被右方控件遮盖。正确的处理方法应该是将超出部分文本换行,并下移下方控件位置。
还有许多如界面主题、动画效果等高级界面功能在WinForm中较难实现。虽然从编程角度上看,这些功能的确可以通过对WinForm进行底层绘图级别的扩展和补充一一实现,但是解决这些属于框架先天设计的问题往往需要耗费大量的时间和精力。
引入CEF(Chromium Embedded Framework)作为应用程序UI框架。CEF实质上是一个谷歌浏览器的内核。与WinForm框架中自带的WebView控件不同的是,WebView的内核是IE,对HTML特性的支持十分糟糕。而CEF的WebKit内核能够良好地支持HTML 5特性。
得益于互联网尤其是移动互联网的快速发展和社区的力量,以Bootstrap、Foundation和Semantic UI为代表的一系列开源前端框架已经在HTML+CSS+JS的体系中将UI功能开发得十分成熟。其常用控件种类上能够基本满足桌面程序的要求。从美观角度上看,这些标记式的界面框架完全优于一众传统的代码式的界面框架。从运行性能上看,以Web为主要应用场景的UI实现方式天生需要适应不同的软硬件环境,所以在性能优化上已经有了长足的积累,在处理复杂特效时有比同样是标记式界面框架的WPF有更多的优势。
CEF代替Form作为前端界面的容器,界面由WEB技术实现,而事务逻辑仍然由C#实现这种开发方式与移动端的Hybird APP有着很多相似之处,后者已经以WEB+JAVA或WEB+Objectiv-C的实现方式得到了业界的大量运用。
发表回复