在Smobiler开发过程中,大家经常会对窗体的跳转,显示,关闭,生命周期存在一些不明白的地方,这篇文章主要用来说明Smobiler窗体。

Smobiler Form

  • 和WindowsForm编程一样,在手机上显示的界面在Smobiler就是一个窗体,使用Show方法打开新的Smobiler窗体时,在客户端上也会打开新的界面,Smobiler的窗体是带状态的,也就是说你在窗体上定义的变量在每次客户端处理的时候都是保持的,关闭界面回到上一个界面时,上一个界面的状态变量也会维持,这里和Web的Page是不一样的,Web的Page在每一次显示的时候都需要重新刷新(就像后退一样)。

Smobiler 窗体堆栈

和Android一样,Smobiler窗体也是使用堆栈的方式,即使用Show方法会将新的窗体入栈,使用Close方法会将窗体出栈并显示栈顶的窗体,下面来说明这个过程。

  • 每一个Smobiler应用都包含了一个起始的窗体,这里我们使用SmobilerForm1来表示第一个窗体。

  • 在SmobilerForm1中调用方法this.Show(new SmobilerForm2());时就会打开SmobilerForm2窗体,这时会将SmobilerForm2窗体入栈,即在栈顶,这时手机界面上也会显示为SmobilerForm2的窗体。

  • 在SmobilerForm2窗体上调用方法this.Show(new SmobilerForm3());打开SmobilerForm3这个窗体,同上面的过程,会将SmobilerForm3窗体入栈。

  • 在SmobilerForm3上调用this.Close(),这时会将SmobilerForm3出栈,这时栈顶为SmobilerForm2,此时手机界面上也会显示SmobilerForm2的界面。

  • 说明

    • Smobiler窗体堆栈有限制,默认为10层,最大50层,原因是由于每一个窗体都占用一定的内存,过多的窗体栈会导致内存增加过快,并且存在大量无效的窗体。所以如果从A-B再回到A窗体时,使用Close方法关闭B窗体即可回到A窗体,不要从B窗体再使用Show方法显示A窗体。
    • Smobiler窗体是严格基于堆栈的,不允许跨栈访问,窗体的关闭必须按顺序出栈,比如A-B-C,如果回到A窗体,必须先关闭C,再关闭B
  • 代码示例 https://github.com/comsmobiler/BlogsCode/tree/master/Source/BlogsCode_SmobilerForm

Smobiler 窗体生命周期

一个窗体被打开到关闭会经历如下生命周期

  • Load 在窗体第一次被装载时触发此事件(一个窗体只会触发一次此事件)
  • Deactivate 在打开新的窗体时,当前窗体会触发Deactivate事件,代表当前窗体没有被激活。
  • Activated 打开的窗体关闭时,会回到当到当前窗体触发Activated事件,代表当前窗体被激活了。
  • Closing 窗体关闭时的事件。可在此事件中取消关闭操作。
  • Closed 窗体关闭后的事件。

Smobiler 窗体传值

  • 为窗体界面传值时,可通过以下几个方式

    • 构造函数。在构建函数中切记需要调用当前的默认构造函数,即在新的构造函数后面加上 :this()
    • this.Client.Session,但是不要使用静态变量(static声明的变量),静态变量是所有客户端共享的,而this.Client.Session是当前客户端所有界面共享的。不会影响其它客户端。
    • 在窗体上创建Public的属性,并为属性赋值。

Smobiler 窗体相关推荐

  1. VisualStudio移动开发(C#、VB.NET)Smobiler开发平台——BarcodeView控件的使用方式,.Net移动开发...

    2019独角兽企业重金招聘Python工程师标准>>> BarcodeView控件 一.          样式一 我们要实现上图中的效果,需要如下的操作: 从工具栏上的" ...

  2. .Net语言 APP开发平台——Smobiler学习日志:实现手机上常见的ListMenuView

    最前面的话:Smobiler是一个在VS环境中使用.Net语言来开发APP的开发平台,也许比Xamarin更方便 一.目标样式 我们要实现上图中的效果,需要如下的操作: 1.从工具栏上的"S ...

  3. VisualStudio移动开发(C#、VB.NET)Smobiler开发平台——VoiceRecorder控件的使用方式.Net移动开发...

    2019独角兽企业重金招聘Python工程师标准>>> 样式一 我们要实现上图中的效果,需要如下的操作: 从工具栏上的"Smobiler Components"拖 ...

  4. .Net语言 APP开发平台——Smobiler学习日志:仿12306的APP登陆界面

    最前面的话:Smobiler是一个在VS环境中使用.Net语言来开发APP的开发平台,也许比Xamarin更方便 一.目标样式 我们要实现上图中的效果,需要如下的操作: 1.从工具栏上的"S ...

  5. .NET(C#、VB)移动开发——Smobiler平台控件介绍:TextTabBar控件

    2019独角兽企业重金招聘Python工程师标准>>> TextTabBar控件 样式一 我们要实现上图中的效果,需要如下的操作: 从工具栏上的"Smobiler Comp ...

  6. .Net语言 APP开发平台——Smobiler学习日志:如何快速实现类似于微信的悬浮显示二维码效果...

    最前面的话:Smobiler是一个在VS环境中使用.Net语言来开发APP的开发平台,也许比Xamarin更方便 样式一 一.目标样式 我们要实现上图中的效果,需要如下的操作: 1.从工具栏上的&qu ...

  7. .NET(c#) 移动APP开发平台 - Smobiler(1)

    原文:https://www.cnblogs.com/oudi/p/8288617.html 如果说基于.net的移动开发平台,目前比较流行的可能是xamarin了,不过除了这个,还有一个比xamar ...

  8. 移动开发(C#、VB.NET)Smobiler开发平台——GifView控件的使用方式

    2019独角兽企业重金招聘Python工程师标准>>> 一.          样式一 我们要实现上图中的效果,需要如下的操作: 从工具栏上的"Smobiler Compo ...

  9. php仿微信朋友圈网站源码,Smobiler仿微信朋友圈的消息代码实例

    这篇文章主要介绍了.Net语言Smobiler开发平台如何仿微信朋友圈的消息样式?本文为大家揭晓答案 最前面的话:Smobiler是一个在VS环境中使用.Net语言来开发APP的开发平台,也许比Xam ...

  10. .NET(C#、VB)APP开发——Smobiler平台控件介绍:BarcodeReader组件

    本文简述如何在Smobiler中使用BarcodeReader组件进行条码识别.Barcodereader通过机器学习能识别不规则条码,效率更好. Step 1. 新建一个SmobilerForm窗体 ...

最新文章

  1. 避开移入移出事件内部div干扰事件,e是function(e)的e
  2. 非常好!!!Linux源代码阅读——环境准备【转】
  3. 我的大学到研究生自学 Java 之路,过程艰辛,不放弃,保持热情,最终发现我是这样拿到大厂 offer 的!...
  4. office word中利用宏编程批量调节图片的亮度和对比度
  5. jsp漂亮的登录界面源码_【案例+源码】详解MVC框架模式及其应用
  6. Android中通过反射和getResource()得到id的方式去改变View的显示效果
  7. SQLite指南(2) -- 帮助及编译SQLite
  8. python守护线程_Python之守护线程与锁
  9. 今天写了个商品采购入得存储过程,使用游标实现的,实现了多个商品库存的增加...
  10. java开发_eclipse导出为war文件,热部署到tomcat运行总结[转]
  11. MVC源码解析 - UrlRoutingModule / 路由注册
  12. 正则表达式 - php正则匹配内容?
  13. win10右下角网络图标不见了,而且在设置里开关是灰色,无法开启
  14. LINUX安装中文字体SimHei
  15. C#实现百度AI-实时语音识别转写-附源码
  16. android studio项目总结,Android Studio 使用总结
  17. c语言iq测试,IQ智商测试题
  18. Go-加密学(四) - 证书/SSL/TLS/https单向认证/思维导图
  19. Airbnb 2019年纽约住房情况分析报告
  20. sasl java_SASL协议java实现

热门文章

  1. 【Badboy】脚本录制
  2. 基于单片机智能交通灯控制系统设计外文文献_三种典型的微机控制系统
  3. [数模笔记]蒙特卡罗模拟
  4. 数学建模学习:蒙特卡洛模拟
  5. 真4k测试样片_如何让自己的抖音视频更高清?测试一天后,偷偷告诉你
  6. HDU2177——取(2堆)石子游戏(威佐夫博弈)
  7. use mysql命令_mysql命令-use
  8. mysql重启服务命令_重启mysql命令
  9. 296.deepin下载安装、root改密、cpu不降频、修改快捷键、创建启动器快捷方式、win文件访问、直接进win无deepin启动项...
  10. mysql 数据库修改ip_mysql数据库学习之修改主库ip地址