自己动手写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库也是应用到了整个平台的项目中,在各个项目组中进行推广.因为项目的保密性 ...
随机推荐
- Oracle优化查询技巧
1. WHERE子句中的连接顺序:Oracle采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的 ...
- win7,win8.1下hosts文件无法修改的快速解决办法
一,找到C:\Windows\System32\drivers\etc,下hosts文件复制一份到桌面: 二,使用notepad++或其他编辑器修改桌面复制出来的那份HOSTS: 三,将修改后的文件复 ...
- C语言提供了几个标准库函数 itoa() atoi()
C语言提供了几个标准库函数C语言提供了几个标准库函数,可以将任意类型(整型.长整型.浮点型等)的数字转换为字符串.以下是用itoa()函数将整数转换为字符串的一个例子: # include <s ...
- static 变量
被static 修饰的变量全部称为静态变量.所有的静态变量全部存储在静态存储区.按静态变量定义的位置不同,又分为全局静态变量和局部静态变量. 1)全局静态变量 在全局变量的说明前加上static,就是 ...
- poj3241 曼哈顿最小距离生成树第k大的边
思路: 已知: 要生成曼哈顿距离最小生成树,一个点最多和四周8个点连线,那8个点分别是将那个点四周360度平分成8个区间,每个区间里面和那个点曼哈顿距离最小的点,所以如果有n个点,那么最多有4n条边, ...
- DIOCP之EchoServer分析
constructor TfrmMain.Create(AOwner: TComponent);begin inherited Create(AOwner); sfLogger.setAppender ...
- 使用引脚模拟PWM波控制引脚
/********************************* 代码功能:输出PWM波控制引脚 使用函数: 创作时间:2016*10*07 作者邮箱:jikexianfeng@outlook.c ...
- URLEncoder编码
客户端在进行网页请求的时候,网址中可能会包含非ASCII码形式的内容,比如中文. 而直接把中文放到网址中请求是不允许的,所以需要用URLEncoder编码地址, 将网址中的非ASCII码内容转换成可以 ...
- PostGreSQL 分页
select * from users limit 10 offset 20; limit A offset B 其中A是页容量 B是偏移量 即跳过前20条 查询每页10条
- PHP 输出缓冲控制(Output Control) 学习
php 缓冲简介 其实我对php ob 系列印象还是很模糊,具体怎么玩的,还不是很了解,平时curd,确实对这些内容没有深入.作为phper 甚是惭愧.网上搜了一通,互相copy,代码运行不能出现作者 ...