多样、互动的WinForm UI设计与开发思路 转载
Flash支持
如果你以前不了解或熟悉Flash,当你看到这么多激动人心的特性后,大脑里已经迸发出各种思想的火花了?Flash不仅可以帮助我们在 里实现各种强大的交互功能,而且可以借助于,实现类似于的富客户端(既 不算胖也不算瘦客户端吧)^^
我们再来看一下除了以上几点,Flash真正吸引我们解决文章前面提到的问题的一些特性:
Flash基于流传输,非常小巧并且嵌入浏览器
纯Flash可以做到跨平台
Flash在动画效果和用户交互上的强大表现力
Flash动态交互效果的容易实现(相对于编程来说)
FLASH外观
HTML
既然可以在应用程序中使用Flash,那么在其中使用HTML页面呢?当然可以,事实上这并不是一种新做法,比如微软,就在相当长时间里都在 它的软件里广泛使用这种技术,例如MSN。在应用程序中嵌套HTML,好处自然就是可以把做得像Web一样,一个网页的外观可以做 到哪种程度,你的控件,窗体也可以做到哪种程度。我们在一个网页上用HTML代码、Table表格、Form表单,各种图片以及CSS搞出来的漂亮界面, 在中靠代码达到相同效果可是很大的工程。而对这些界面的调整,在html里也许很方便的改一下图片和css,在中可能相当于 重写控件。以上这些都是促使我们使用Flash 或者Html 的重要原因:开发、修改其内容和外观样式都很方便。
在中嵌套HTML,就目前来说我们只能用COM组件,在.NET里用起来不是很方便。
关键问题在于,我们这里讨论的和HTML 是作为软件系统的控件或其一部分,而并不是单纯的浏览器作用。也就是说,我们首先在乎的是其界面,然后是其交互性,也就是这些HTML 的容器要能够访问和控制这些HTML的内容和行为。
在里取得Html里的控件属性是比较容易的,但你有没有想过嵌套在你的里的HTML,仍能够访问里的对象呢?看看的这篇文章:
结合 与 生成美观实用的 应用程序。
由于通过()方法来访问某个指定的HTML页面,所以这个页面的位置无非以下几种情况:
1, 远程Web服务器,例如 或者
2. 本地Web服务器,例如 或者
3. 本地文件系统,例如 D:\\.htm (只能是静态页面了)
这样的一个问题就是,当你发布你的软件时,这些HTML需要一起发布,而且是完全暴露在用户面前。有没有办法把HTML一起打包呢?
需要浏览一个url,这没错,但这个Web服务器能不能在我们的软件启动时,被虚拟创建出来呢?其实我们可以使用
.Web...t()方法创建我们自己的Web宿主环境。
它其实是把一个本地目录作为根虚拟目录,然后在内存里开辟一个新的来充当Web宿主。在这个 里我们又可以通过 .(new (page, query, )) 来处理某个请求。而这个Web宿主环境还既可以运行静态HTML,也可以运行ASP.NET:) 也就是说我们可以用ASP.NET来开发我们的控件,而我们的软件内嵌了一个小型的ASP.NET服务器。
在这里我们可以把所有的页面都作为资源嵌入到你的软件里,然后在运行的时候自动把它们都释放到一个临时目录,然后让直接访问这个目录,或者启动你的Web宿主,访问它提供的虚拟路径。
有没有更好的办法呢?我想就是自己写一个复杂的Web宿主,能够直接从资源文件中读取HTML,而不是通过虚拟目录。这样的话我们就可以把所有用到的页面,甚至整个网站打包到一个DLL了:)