众所周知,VB.NET自身并不具备对数据库进行操作的功能,它对数据库的处理是通过.NET FrameWork SDK中面向数据库编程的类库和微软的MDAC来实现的。其中,ADO.NET又是.NET FrameWork SDK中重要的组成部分。要了解VB.NET的数据库编程,首先要明白ADO.NET的工作原理以及相关的对象、方法、属性。本文将结合具体实例为你简单介绍ADO.NET数据库访问对象以及VB.NET数据库编程基本方法。
下面的教程将带你创建一个工程, 并将Spread控件绑定到一个数据库。 在这个教程中,主要的步骤为: 1. 将Spread添加到一个数据绑定工程中 2. 设置数据库连接 3. 指定要使用的数据 4. 创建数据集 5. 把Spread控件绑定到数据库 6. 通过改变单元格类型改善显示效果 将Spread添加到一个数据绑定工程中 打开一个新的Visual Studio.NET工程。将工程命名为databind。将工程中的窗体文件命名为binding.cs(或.vb)。 将FpSpread控件添加到你的工程中,然
直观的说 1)首先,在数据库Sql server2019中新建一个数据库eg:students;
大家好,又见面了,我是你们的朋友全栈君。 C#基础教程-c#实例教程,适合初学者。 第一章 C#语言基础 本章介绍C#语言的基础知识,希望具有C语言的读者能够基本掌握C#语言,并以此为基础,能够进一步学习用C#语言编写window应用程序和Web应用程序。当然仅靠一章的内容就完全掌握C#语言是不可能的,如需进一步学习C#语言,还需要认真阅读有关C#语言的专著。 1.1 C#语言特点 Microsoft.NET(以下简称.NET)框架是微软提出的新一代Web软件开发模型,C#语言是.NET框架中新一代的开发工具。C#语言是一种现代、面向对象的语言,它简化了C++语言在类、命名空间、方法重载和异常处理等方面的操作,它摒弃了C++的复杂性,更易使用,更少出错。它使用组件编程,和VB一样容易使用。C#语法和C++和JAVA语法非常相似,如果读者用过C++和JAVA,学习C#语言应是比较轻松的。 用C#语言编写的源程序,必须用C#语言编译器将C#源程序编译为中间语言(MicroSoft Intermediate Language,MSIL)代码,形成扩展名为exe或dll文件。中间语言代码不是CPU可执行的机器码,在程序运行时,必须由通用语言运行环境(Common Language Runtime,CLR)中的既时编译器(JUST IN Time,JIT)将中间语言代码翻译为CPU可执行的机器码,由CPU执行。CLR为C#语言中间语言代码运行提供了一种运行时环境,C#语言的CLR和JAVA语言的虚拟机类似。这种执行方法使运行速度变慢,但带来其它一些好处,主要有: 通用语言规范(Common Language Specification,CLS):.NET系统包括如下语言:C#、C++、VB、J#,他们都遵守通用语言规范。任何遵守通用语言规范的语言源程序,都可编译为相同的中间语言代码,由CLR负责执行。只要为其它操作系统编制相应的CLR,中间语言代码也可在其它系统中运行。 自动内存管理:CLR内建垃圾收集器,当变量实例的生命周期结束时,垃圾收集器负责收回不被使用的实例占用的内存空间。不必象C和C++语言,用语句在堆中建立的实例,必须用语句释放实例占用的内存空间。也就是说,CLR具有自动内存管理功能。 交叉语言处理:由于任何遵守通用语言规范的语言源程序,都可编译为相同的中间语言代码,不同语言设计的组件,可以互相通用,可以从其它语言定义的类派生出本语言的新类。由于中间语言代码由CLR负责执行,因此异常处理方法是一致的,这在调试一种语言调用另一种语言的子程序时,显得特别方便。 增加安全:C#语言不支持指针,一切对内存的访问都必须通过对象的引用变量来实现,只允许访问内存中允许访问的部分,这就防止病毒程序使用非法指针访问私有成员。也避免指针的误操作产生的错误。CLR执行中间语言代码前,要对中间语言代码的安全性,完整性进行验证,防止病毒对中间语言代码的修改。 版本支持:系统中的组件或动态联接库可能要升级,由于这些组件或动态联接库都要在注册表中注册,由此可能带来一系列问题,例如,安装新程序时自动安装新组件替换旧组件,有可能使某些必须使用旧组件才可以运行的程序,使用新组件运行不了。在.NET中这些组件或动态联接库不必在注册表中注册,每个程序都可以使用自带的组件或动态联接库,只要把这些组件或动态联接库放到运行程序所在文件夹的子文件夹bin中,运行程序就自动使用在bin文件夹中的组件或动态联接库。由于不需要在注册表中注册,软件的安装也变得容易了,一般将运行程序及库文件拷贝到指定文件夹中就可以了。 完全面向对象:不象C++语言,即支持面向过程程序设计,又支持面向对象程序设计,C#语言是完全面向对象的,在C#中不再存在全局函数、全局变量,所有的函数、变量和常量都必须定义在类中,避免了命名冲突。C#语言不支持多重继承。 1.2 编写控制台应用程序 使用SDK命令行工具编写控制台程序 第一个程序总是非常简单的,程序首先让用户通过键盘输入自己的名字,然后程序在屏幕上打印一条欢迎信息。程序的代码是这样的: using System;//导入命名空间。//为C#语言新增解释方法,解释到本行结束 class Welcome//类定义,类的概念见下一节 { /*解释开始,和C语言解释用法相同 解释结束*/ static void Main()//主程序,程序入口函数,必须在一个类中定义 { Console.WriteLine(“请键入你的姓名:”);//控制台输出字符串 Console.ReadLine();//从键盘读入数据,输入回车结束 Console.WriteLine(“欢迎!”); } } 可以用任意一种文本编辑软件完成上述代码的编写,然后把文件存盘,假设文件名叫做welcome.c
第一章 用Hello ACCP.NET快速热身(一) 1-1.进入C#世界 a.第一个C#程序 (1)新建项目【项目:project】 (2)生成解决方案【生成:build,解决方案:solution】 (3)调试【调试:debug】 b.认识控制台应用程序文件夹结构 Program.cs .cs作为扩展名 HelloACCP.exe 是编译后生成的文件,可以直接执行 经验:视图-解决方案资源管理器 也可以使用快捷键Ctrl+Alt+L 工具-选项-项目
窗体和应用程序类表示Form和Application对象,这些类是从TComponent派生而来,它们实际也是组件,单独地把它列举出来,以示与拖到窗体上的控件加以区别。
问题篇: 昨天在CSDN看到这样一个帖子:“苦逼的三层代码”: 采用传统的三层架构写代码,每个数据表都要定义一个实体对象,编写后台的时候, Web层需要针对页面的用户输入逐个手动编写赋值到实体对象的各个属性,然后DAL层还要用SqlHelper 进行各个存储过程对应参数的实体赋值, 我的天呀,写几个表还好,多个表呢, 写的后台都没力气, 典型的苦逼代码工没营养,各位有啥好的处理方法或开发方式。。 看到跟帖,大部分都说使用ORM解决这个问题,但我觉得ORM还是没有解决贴主的几个问题: 每个
WPF(Windows Presentation Foundation)是微软推出的基于Windows 的用户界面框架,属于.NET Framework 3.0的一部分。它提供了统一的编程模型、语言和框架,真正做到了分离界面设计人员与开发人员的工作;同时它提供了全新的多媒体交互用户图形界面
Visual Basic是一款功能强大的编程开发工具,基础是编程语言Basic ,为了让人们更好的学习编程而推出,也是老vb的最后一个版本。它拥有强大的c/s数据库开发功能,而且还引进了最新的ado技术,专业的程序员使用ado组件可以很方便的连接到access、sqlserver、oracel等关系型数据库,通过sql标准语言可以直接操作数据库,所以也被称上最流行的数据库开发工具。可以说它的面世使原本极其复杂困难的编程、软件开发的工作变得简单。
我遇到的大多数 Windows 窗体应用程序都不存在或单元测试覆盖率极低。而且它们通常也很难维护,项目中各种 Form 类的代码背后有数百甚至数千行代码,但它不必是这样。仅仅因为 Windows 窗体是一项“遗留”技术,并不意味着你注定会造成无法维护的混乱。下面是创建可维护和可测试的 Windows 窗体应用程序的十个技巧。
Winform控件是Windows Forms中的用户界面元素,它们可以用于创建Windows应用程序的各种视觉和交互组件,例如按钮、标签、文本框、下拉列表框、复选框、单选框、进度条等。开发人员可以使用Winform控件来构建用户界面并响应用户的操作行为,从而创建功能强大的桌面应用程序。
System 包含了基础类,用于定义类型/数组/字符串/事件/事件处理程序/异常 处理 /接口/数据类型转换/数学计算/应用程序环境管理等等.
VB是我们常常会见到的一款可视化程序设计语言,它的功能十分强大,因此有很多人会使用它,但是有时候我们需要用到VB来连接Access数据库,但是却无从下手,那么VB怎么连接访问Access数据库呢?不懂的朋友请看以下内容。
上篇文章,为大家讲解了数据库的接口,大家对ADO也有了较为基础的了解,这篇文章主要解决大家对ADO的用处的疑惑。VB为用户提供了很多访问数据库的方式:
1. 数据库访问性能优化 数据库的连接和关闭 访问数据库资源需要创建连接、打开连接和关闭连接几个操作。这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源。ASP.NET中提供了连接池(Connection Pool)改善打开和关闭数据库对性能的影响。系统将用户的数据库连接放在连接池中,需要时取出,关闭时收回连接,等待下一次的连接请求。 连接池的大小是有限的,如果在连接池达到最大限度后仍要求创建连接,必然大大影响性能。因此,在建立数据库连接后只有在真正需要操作时才打开
如何使用 Visual C# .NET 对 DataGrid Windows 控件执行分页 察看本文应用于的产品 文章编号 : 307710 最后修改 : 2005年3月23日 修订 : 3.1 本文的发布号曾为 CHS307710 本页 概要 要求 向 DataGrid Windows 控件中添加分页的步骤 疑难解答 参考 这篇文章中的信息适用于: 概要 DataGrid Web 控件有内置的自动或自定义分页功能,而 DataGrid Wi
1. 数据库访问性能优化 数据库的连接和关闭 访问数据库资源需要创建连接、打开连接和关闭连接几个操作。这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源。ASP.NET中提供了连接池(Connection Pool)改善打开和关闭数据库对性能的影响。系统将用户的数据库连接放在连接池中,需要时取出,关闭时收回连接,等待下一次的连接请求。连接池的大小是有限的,如果在连接池达到最大限度后仍要求创建连接,必然大大影响性能。因此,在建立数据库连接后只有在真正需要操作时才打开连接,使用完毕后马上关闭,从而尽量减少数据库连接打开的时间,避免出现超出连接限制的情况。 使用存储过程 存储过程是存储在服务器上的一组预编译的SQL语句,类似于DOS系统中的批处理文件。存储过程具有对数据库立即访问的功能,信息处理极为迅速。使用存储过程可以避免对命令的多次编译,在执行一次后其执行规划就驻留在高速缓存中,以后需要时只需直接调用缓存中的二进制代码即可。另外,存储过程在服务器端运行,独立于ASP.NET程序,便于修改,最重要的是它可以减少数据库操作语句在网络中的传输。 优化查询语句 ASP.NET中ADO连接消耗的资源相当大,SQL语句运行的时间越长,占用系统资源的时间也越长。因此,尽量使用优化过的SQL语句以减少执行时间。比如,不在查询语句中包含子查询语句,充分利用索引等。 2. 字符串操作性能优化 使用值类型的ToString方法 在连接字符串时,经常使用"+"号直接将数字添加到字符串中。这种方法虽然简单,也可以得到正确结果,但是由于涉及到不同的数据类型,数字需要通过装箱操作转化为引用类型才可以添加到字符串中。但是装箱操作对性能影响较大,因为在进行这类处理时,将在托管堆中分配一个新的对象,原有的值复制到新创建的对象中。使用值类型的ToString方法可以避免装箱操作,从而提高应用程序性能。 运用StringBuilder类 String类对象是不可改变的,对于String对象的重新赋值在本质上是重新创建了一个String对象并将新值赋予该对象,其方法ToString对性能的提高并非很显著。在处理字符串时,最好使用StringBuilder类,其.NET 命名空间是System.Text。该类并非创建新的对象,而是通过Append,Remove,Insert等方法直接对字符串进行操作,通过ToString方法返回操作结果。 其定义及操作语句如下所示:
我们对数据库进行操作时,一方面要使用户可以在程序界面上对需要的数据进行访问;另一方面可以对数据库中的数据进行各种操作,最终的操作结果还要反馈给用户。
C#程序设计实战练习项目,做一个类似于QQ的软件,程序参考明日科技出版的《C#项目开发入门实战》第一章:Q友,做自己的QQ。
Delphi是基于Pascal语言的RAD快速应用程序开发工具(Rapid Application Development),为Windows系统下的可视化集成开发工具,它提供强大的VCL(Visual Component Library,可视化组件库)
Connection对象:是一个连接对象,主要功能是建立于物理数据库的连接,主要包括4中访问数据库的对象类,如下:
《Visual Basic程序设计教程:计算机类》是中国科学技术出版社出版的图书,作者是王东、刘福来。
WPF也是我今年刚开始深入去了解,看了不少的学习视频和书籍,受剑神Python入门到放弃的启发,想把这段时间学习内容做个总结,一是因为我相信技术总是需要不断的总结与练习才能有所进步,二是希望帮助初学者对WPF有个初步的了解,大家一起探讨学习进步。
1.可以将 Windows 窗体 SplitContainer 控件看作是一个复合体,它是由一个可移动的拆分条分隔的两个面板。当鼠标指针悬停在该拆分条上时,指针将相应地改变形状以显示该拆分条是可移动的。
首先声明,本文并非原创,纯属搬运,内容来自一位叫做飞扬青春的大神的Gitee主页,主要是为了收藏下面介绍的100多个Qt开发经验。比如qss的ANSI编码、嵌套窗口中主窗口无法接收鼠标移动事件等,又比如我用qss设置窗口样式,但是项目每次重新构建以后,样式表就会不生效等问题,也花了自己不少时间去解决,所以在这里转发大神的经验,留作以后参考和逐条的研究,也分享给更多正在学习Qt或者正在使用Qt进行程序开发的朋友们。
1、 窗体 的属性 1、常用属性 (1)Name属性:用来获取或设置窗体的名称,在应用程序中可通过Name属性来引用窗体。 (2) WindowState属性: 用来获取或设置窗体的窗口状态。 取值有三种: Normal (窗体正常显示)、 Minimized(窗体以最小化形式显示)和 Maximized(窗体以最大化形式显示)。 (3)StartPosition属性:用来获取或设置运行时窗体的起始位置。其取值及含义如表9-1 所示。默认的起始位置是WindowsDefaultLocation。 (4)Text属性:该属性是一个字符串属性,用来设置或返回在窗口标题栏中显示的文字。 (5)Width属性:用来获取或设置窗体的宽度。 (6)Height属性:用来获取或设置窗体的高度。 (7)Left属性:用来获取或设置窗体的左边缘的x坐标(以像素为单位)。 (8)Top属性:用来获取或设置窗体的上边缘的y坐标(以像素为单位)。 (9)ControlBox属性:用来获取或设置一个值,该值指示在该窗体的标题栏中是否显示控制框。值为true时将显示控制框,值为false时不显示控制框。 (10)MaximizeBox属性:用来获取或设置一个值,该值指示是否在窗体的标题栏中显示最大化按钮。值为 true时显示最大化按钮,值为false时不显示最大化按钮。 (11)MinimizeBox 属性:用来获取或设置一个值,该值指示是否在窗体的标题栏中显示最小化按钮。值为 true时显示最小化按钮,值为false时不显示最小化按钮。 (12)AcceptButton 属性:该属性用来获取或设置一个值,该值是一个按钮的名称,当按 Enter 键时就相当于单击了窗体上的该按钮。 (13)CancelButton 属性:该属性用来获取或设置一个值,该值是一个按钮的名称,当按 Esc 键时就相当于单击了窗体上的该按钮。 (14)Modal 属性:该属性用来设置窗体是否为有模式显示窗体。如果有模式地显示该窗体,该属性值为true;否则为 false。当有模式地显示窗体时,只能对模式窗体上的对象进行输入。必须隐藏或关闭模式窗体(通常是响应某个用户操作),然后才能对另一窗体进行输入。有模式显示的窗体通常用做应用程序中的对话框。 (15)ActiveControl属性:用来获取或设置容器控件中的活动控件。窗体也是一种容器控件。 (16)ActiveMdiChild属性:用来获取多文档界面(MDI)的当前活动子窗口。 (17)AutoScroll 属性:用来获取或设置一个值,该值指示窗体是否实现自动滚动。如果此属性值设置为true,则当任何控件位于窗体工作区之外时,会在该窗体上显示滚动条。另外当自动滚动打开时,窗体的工作区自动滚动,以使具有输入焦点的控件可见。 (18)BackColor属性:用来获取或设置窗体的背景色。 (19)BackgroundImage属性:用来获取或设置窗体的背景图像。 (20)Enabled 属性:用来获取或设置一个值,该值指示控件是否可以对用户交互作出响应。如果控件可以对用户交互作出响应,则为 true;否则为false。默认值为true。 (21)Font属性:用来获取或设置控件显示的文本的字体。 (22)ForeColor属性:用来获取或设置控件的前景色。 (23)IsMdiChild属性:获取一个值,该值指示该窗体是否为多文档界面(MDI)子窗体。值为 true时,是子窗体,值为false时,不是子窗体。 (24)IsMdiContainer 属性:获取或设置一个值,该值指示窗体是否为多文档界面(MDI)中的子窗体的容器。值为true时,是子窗体的容器,值为false时,不是子窗体的容器。 (25)KeyPreview属性:用来获取或设置一个值,该值指示在将按键事件传递到具有焦点的控件前,窗体是否将接收该事件。值为true时,窗体将接收按键事件,值为false时,窗体不接收按键事件。 (26)MdiChildren属性:数组属性。数组中的每个元素表示以此窗体作为父级的多文档界面(MDI)子窗体。 (27)MdiParent属性:用来获取或设置此窗体的当前多文档界面(MDI)父窗体。 (28)ShowInTaskbar属性:用来获取或设置一个值,该值指示是否在Windows任务栏中显示窗体。 (29)Visible属性:用于获取或设置一个值,该值指示是否显示该窗体或控件。值为true 时显示窗体或控件,为 false时不显示。 (30)Capture属性:如果该属性值为true,则鼠标就会被限定只由此控件响应,不管鼠标是否在此控件的范围内。 2、常用的方法 下面介绍一些窗体的最常用方法。 (1)Show方法:该方法的作用是让窗体显示出来,其调用格式为: 窗体名.
本文采用CC BY-NC-SA 3.0 Unported协议进行许可,转载请保留此文章链接
注意:控件的类和部分类(包括窗体生成类/窗体设计类)全部要加public来修饰,不然无法在工具箱里找到
火热的MVVM框架 最近几年最热门的技术之一就是前端技术了,各种前端框架,前端标准和前端设计风格层出不穷,而在众多前端框架中具有MVC,MVVM功能的框架成为耀眼新星,比如GitHub关注度很高的Vue.js ,由于是国人作品,其设计风格和文档友好度对国人而言更胜一筹,因此我也将它推荐到公司采用,其中我推荐都理由就是它非常优秀的MVVM功能,面向数据而不是面向DOM细节相比jQuery等更加节省代码,更符合后端程序员的胃口,也更有利于UI设计人员跟程序员都分工配合。 下面是Vue.js实现MVVM功能的原理
WPF 是微软推出的表现层UI开发框架,全称 Windows Presentation Foundation。 相对Winform来讲,它使用一种全新的桌面应用程序 UI 的开发方式。 除了像Winform那样在“Windows 窗体”上删除控件之外,WPF 还为应用程序开发提供了额外的功能改善,包括丰富的用户界面、动画等等。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/161095.html原文链接:https://javaforall.cn
在Invoke或者BeginInvoke的使用中无一例外地使用了委托Delegate
之前就提过,Qt的属性机制强大到爆,这次的动态属性功能就是要让他爆,很难想象只要一行代码即可widget->setProperty("value", value);没错就这么简单,调用弱属性机制,可以直接控制控件中的所有属性,设计这个机制的人绝对是天才,直接跪了。至于具体底层是怎么实现的,这个可以先不管,也没有太多精力再去研究Qt的源码了,那个源码非常庞大,研究源码的时候最快的办法是搜索直接定位对应文件。本设计器除了提供文本框输入值进行动态改变控件属性以外,还提供了了滑动条、随机模拟数据、串口采集数据、网络采集数据、数据库采集数据等多种方式获取数据源。
工作中写WinForm程序经常会引用第三方的组件,包括引用Com组件,做了一个桌面程序需要展示PDF,看了些其它的开源组件对PDF的兼容性都不是很好,有些看着PDF是正常的但是复制出来的字有很多乱码。然后就直接引用了adboe pdf reader来显示,测试了不同pdf兼容性算是不错的。那如何引用呢?
https://www.cnblogs.com/worldreason/archive/2008/06/09/1216127.html
本文转载:http://tech.it168.com/oldarticle/2006-04-03/200604031055437.shtml
连接字符串 1、连接字符串的写法 在字符串变量中,描述连接字符串所需的服务器地址、数据库名称、集成安全性(即是否使用Windows验证) sqlConnection.ConnectionString = "Server=(Local); Database=EduBaseDemo; Integrated Security=sspi"; 2、SqlConnection对象 头部添加调用,包含访问SQL Server所需的各类对象 using System.Data.SqlClient; 返回数据库连接对象,参数
Winform 中的常用控件来自于系统System.Windows.Forms.Control,该类库来自System.Windows.Forms命名空间之内,该命名空间提供各种控件类,使用这些控件类,可以创建丰富的用户界面,具体实现功能由位于该命名空间下的Control系统类派生。Control 类为在Form中显示的所有控件提供基本功能,Form类表示应用程序内的窗口。这包括对话框,无模式窗口和多文档界面 (MDI) 客户端窗口及父窗口,同时也可以通过从UserControl类派生而创建自己的控件。
上一篇文章把插件加载好了,并且把插件中的所有控件都显示到了列表框中,这次要做的就是实现拖曳控件的功能,用户选择一个控件拖曳到画布上,松开,在松开位置处自动实例化该控件,这个需要用到dropEvent和dragEnterEvent事件,重新实现这两个事件,对拖曳的对象进行过滤并调用函数实例化该控件,在实例化该控件的同时实例化控件跟随控件以便拉伸调整大小和位置。这里需要注意的是dragEnterEvent是必须的,很多人以为拖曳只要实现dropEvent就可以了,其实不行的,没有效果的,需要先dragEnterEvent来过滤好了执行event->accept()才行,不然根本没有效果,很多人尤其是初学者都挂在这里,我就是在这里摔了一跤,好疼!
本人所在铁人战队的实验室同学们主要从事单片机的编程开发。但比赛和项目过程中,常常都需要与机器人进行人机交互。虽然实验室常用的HMI串口屏能满足我们的基本需求,但没东西在手的时候,就是个难题了。所以本文则介绍一下使用visual studio软件,进行C#上位机软件的开发入门。 以同学们常用的串口助手(简洁版)为例,来着手进行学习和入门。由于笔者知识有限,且是第一次写博客,有不足或错误之处,还请大家指出,方便修改。
通过命名空间来分类,区别不同的代码功能,也是ASP.NET中所有类的完全名称的一部分。
接下来我们就来学习一下 timer 吧,摇摇脑袋,清醒一下,接下来开始学习....
本文讲述如何连接用户窗体与ADO记录集,最终创建一个与Access窗体相似的用户窗体,可以导航至前一条记录、下一条记录、第一条记录、最后一条记录,等等。
在使用.NET 平台时,你可以选择使用其他语言(如VB.NET、F#等),但C# 是最常用和推荐的语言之一。C# 提供了现代编程语言的特性,包括强类型、面向对象、事件驱动、异步编程等,使其成为在.NET 平台上进行应用程序开发的强大选择。
在程序中,经常会弹出一个对话框来让用户填写一些信息,填写完成后,当用户点击“确定”按钮后,在主窗体中进行其他的处理。比如一个简单的例子,在主窗体中有一个菜单,是“增加用户”,当点击这个菜单之后,我们需要弹出一个增加用户的窗体出来,就假设“增加用户”的窗体叫frmAddUser,那么代码如下:
能够导出控件布局和属性设置数据到xml文件或者其他文件,也是一个非常实用的功能,类似于QtDesigner中把页面设计好以后生成的.ui结尾的文件,其实就是xml文件,按照约定的规则存储好控件名称和属性名称及对应的属性值,然后打开的时候按照这个规则取出来就行了。每个控件还有固定的几个数据需要存储,比如XY轴和对应的宽度高度,然后在xml数据文件的最开始还可以存储整个画布的宽度高度以便其他用途。导出到xml格式,是为了方便解析,毕竟xml数据格式的解析,各种语言平台都有,而且都是非常成熟快速的。其实还可以考虑存储到数据库,这样就更加强大了,能够存储的东西更多,可以干的事情更多。
领取专属 10元无门槛券
手把手带您无忧上云