自己动手写UI库——引入ExtJs(布局)
第一:
| 
 Component类代码如下所示: 
 | 
| 
 public class Component 
    {   
        public Component() 
        { 
        } 
        private string id; 
        public string Id 
        { 
            get 
            { 
                return id; 
            } 
            internal set 
            { 
                id = value; 
            } 
        } 
        private string region; 
        public string Region 
        { 
            get 
            { 
                return region; 
            } 
            set 
            { 
                var str = string.Format("Ext.getCmp('{0}').setRegion('{1}'); ", this.Id, value); 
                RenderContext.ExecScript(str); 
                region = value; 
            } 
        } 
        private int width; 
        public int Width 
        { 
            get 
            { 
                return width; 
            } 
            set 
            { 
                var str = string.Format("Ext.getCmp('{0}').setWidth({1}); ", this.Id, value); 
                RenderContext.ExecScript(str); 
                width = value; 
            } 
        } 
        private int height; 
        public int Height 
        { 
            get 
            { 
                return height; 
            } 
            set 
            { 
                var str = string.Format("Ext.getCmp('{0}').setHeight({1}); ", this.Id, value); 
                RenderContext.ExecScript(str); 
                height = value; 
            } 
        } 
    } 
 | 
| 
 第一: 
这是ExtJs里的一个基类,Ext里所有的界面元素都继承自这个基类 
第二: 
Id,Width,Region,Height都是这个基类的属性,在ExtJs中Component类也包含这些属性,当然还有很多其他的属性,这里我们就没有一一例举了。 
第三: 
设置Width,Region,Height这三个属性的时候我们都让浏览器执行了一段脚本,这段脚本让ExtJs设置控件的相应属性 
 | 
第四:
| 
 Panel类的代码 
 | 
| 
 | 
| 
 第一: 
我们再这个控件类的构造函数里执行了JS代码,并通过JS代码创建了这个控件 
第二: 
创建完控件之后,就马上获取了这个控件的ID,这个ID是EXTJS自动生成的ID,与页面上的其他控件是不会重复的 
第三: 
控件在界面上的ID获取到之后,我们就赋给这个控件的基类的属性 
 | 
| 
 Viewport类的代码 
 | 
| 
 | 
| 
 第一: 
这个类的代码的执行逻辑和panel代码类的逻辑相似 
第二: 
这个类和Panel类都继承自Container类 
 | 
第六:
| 
 Container类的代码 
 | 
| 
 | 
| 
 第一: 
与Extjs相同Container类继承自Compent类,也就是我们前面提到的控件的基类 
第二: 
我们再这个类中添加了Add方法,在这个方法里也是执行了一段JS函数,把一个控件添加到另一个控件中 
 | 
| 
 工程的目录结构: 
 | 
| 
 | 
| 
 第一: 
名称空间我们都加了NS后缀,这是为了使用方便 
 | 
第八:
| 
 ExecScript方法的代码: 
 | 
| 
 | 
| 
 第一: 
这里的代码和我们前面文章讲到的不一样,我这里改正用这种方式执行JS代码了,只有这种方式,才能顺利的得到JS的返回值 
第二: 
C#代码让浏览器执行了一个Exec的JS函数 
 | 
第九:
| 
 Exec的JS方法的代码 
 | 
| 
 | 
| 
 第一: 
传入参数就是我们想要执行的JS语句 
第二: 
用eval的方法执行这个JS语句,然后把返回值还给C# 
 | 
自己动手写UI库——引入ExtJs(布局)的更多相关文章
- 用C++写UI库最本质的思想就是不用C++写UI(如何用 C++ 从零编写 GUI?内含多个开源UI作者的回复,非常精彩)
		
作者:Bingo链接:https://www.zhihu.com/question/24462113/answer/83371803来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请 ...
 - android 引入一个布局库后该有的操作
		
背景 引入一个布局库:com.zhy:percent-support-extends 然后sync now 成功了,也就是同步成功了. 然而开始使用的时候报告了: The following clas ...
 - 【摸鱼神器】UI库秒变低代码工具——表单篇(一)设计
		
前面说了列表的低代码化的方法,本篇介绍一下表单的低代码化. 内容摘要 需求分析. 定义 interface. 定义表单控件的 props. 定义 json 文件. 基于 el-form 封装,实现依赖 ...
 - 【原创】自己动手写工具----XSmartNote [Beta 3.0]
		
一.前面的话 在动笔之前,一直很纠结到底要不要继续完成这个工具,因为上次给它码代码还是一年多之前的事情,参考自己动手写工具----XSmartNote [Beta 2.0],这篇博文里,很多园友提出了 ...
 - 重大发现: windows下C++ UI库 UI神器-SOUI(转载)
		
转载:http://www.cnblogs.com/setoutsoft/p/4996870.html 在Windows平台上开发客户端产品是一个非常痛苦的过程,特别是还要用C++的时候.尽管很多语言 ...
 - 微信小程序开发04-打造自己的UI库
		
前言 github地址:https://github.com/yexiaochai/wxdemo 接上文继续,我们前面学习了小程序的生命周期.小程序的标签.小程序的样式,后面我们写了一个简单的load ...
 - 自己动手写处理器之第二阶段(1)——可编程逻辑器件与PLD电路设计流程
		
将陆续上传本人写的新书<自己动手写处理器>(尚未出版),今天是第五篇,我尽量每周四篇 通过上一章的介绍,读者应该知道CPU内部有一些主要的电路,比方:译码电路.运算电路.控 ...
 - 移动Web UI库(H5框架)
		
1.Framework7 Framework7 - is a free and open source mobile HTML framework to develop hybrid mobile a ...
 - 移动Web UI库(H5框架)有哪些,看这里就够了
		
前言 今年上半年,项目组在项目开发的过程中建立了一套风格统一,组件丰富完善,命名统一规范的PC端UI库,适用于做大型站点,该UI库也是应用到了整个平台的项目中,在各个项目组中进行推广.因为项目的保密性 ...
 
随机推荐
- win8系统安装xampp后apache无法启动
			
根据提示判断为端口被占用: 处理方法: 右击左下角windows图标,选择运行,调了同cmd; 依次排除80及443端口占用情况: netstat -ano|findstr "80" ...
 - 【BZOJ1226】学校食堂Dining(状压DP)
			
题意:见题面 思路:设dp[i,sta,k]为前i个人已经吃完,从第i人到第i+b[i]人的吃饭状况是sta,前一个吃完的人离i的距离是k(可能为负)的最小值 \[ dp[i+1,sta>> ...
 - 极客DIY:使用树莓派制作一套“NAS+私有云盘+下载机”
			
原创作者:HackLiu 0×00 前言   如果你家里有多台设备需要联网需要娱乐,你一定会或多或少遇到设备碎片化带来的烦恼.当然,已经有很多厂商包括新晋的小米.360在内的互联网公司做了这个事情 ...
 - ASP.NET ZERO 学习 事件总线
			
用于注册和触发客户端的全局事件. 介绍 Pub/sub事件模型广泛用于客户端,ABP包含了一个简单的全局事件总线来 注册并 触发事件. 注册事件 可以使用abp.event.on来注册一个全局事件.一 ...
 - 第三十六章 metrics(4)- metrics-graphite
			
将metrics report给graphite(carbon-relay) 一.代码 1.pom.xml <!-- metrics-graphite --> <dependency ...
 - 加载form表单
			
var row = $('#dg').datagrid('getData').rows[rowIndex]; $('#moneyff').form('load', row);//row 可以 ...
 - HTTP协议-引自孤傲苍狼博客
			
一.什么是HTTP协议 HTTP是hypertext transfer protocol(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的 ...
 - SVN服务器安装
			
CentOS 6.5 SVN搭建 (YUM安装) 参考文献:http://www.linuxidc.com/Linux/2013-10/91903.htm 安装说明 安装了一下SVN服务器,过程如 ...
 - [python] 线程
			
来源:田飞雨 链接:http://www.jianshu.com/p/12cd213a93bf 虽然python中由于GIL的机制致使多线程不能利用机器多核的特性,但是多线程对于我们理解并发模型以及底 ...
 - Tempter of the Bone---hdu1010(dfs+剪枝)
			
http://acm.hdu.edu.cn/showproblem.php?pid=1010 折磨我一下午 题目大意: 从s点走到d点能否恰好走k步 刚开始以为是广搜,其实是深搜. dfs多优化一 ...