第1讲可视化程序设计入门.ppt
程序设计实践,何 峰 heaventju.edu.cn,第一讲 可视化程序设计入门,预备知识:什么是Windows,古老的DOS年代,什么是Windows应用程序,统一的、图形化的界面(Interface) 标题栏Caption、图标Icon、MaximizeBox、MinimizeBox、ControlBox、CloseBox 边框(fixed、sizebale) 菜单Menu和状态栏Status Bar 最大的一块区域留给用户编辑文档,SDI Single Document Interface,广义地理解“文档”的概念,Multi Document Interface,讨论:在如图的VC6.0的主界面中出现了多少个窗口?,工程资源管理器也是一个窗口,“停靠”(dock)在窗体的一边; 广义地说,工具栏和状态栏都是window,最常见的一种window:对话框Dialog box,组合框Combo Box,文本框Text Box,单选按钮Option Button,复选框Check Box,对话框的特点: 常为固定的大小(fixed size) 通常为模态(Modal)出现 标准化的窗口元素,这些元素在设计阶段称为控件(Control),第一个Windows应用程序,一起动手来做Hello World,Step 1:启动VS2008创建工程,创建新的项目,运行程序,得到了一个空白的窗体 Window,Form,Window是最终运行的程序,Form是window设计时的状态 程序和软件有什么区别?,Step 2:“画”程序的界面,1. 调整Form的大小,设置窗体的属性(Property),改变窗体大小的方法 设置窗体的属性 Name设为:frmmain Text设为:Say Hello Size设为:600,360 其它属性,Tip:属性窗口的使用技巧,属性窗口的几种状态 浮动float 可停靠dock 选项卡 自动隐藏auto hide 隐藏,2. 为窗体添加一个标签Label,使用工具箱添加控件 窗体上的元素在设计阶段称为控件(control) 添加控件的几种方法 添加label,并设置如下属性 Text:Your Name: Font:Times New Roman,一号加粗,3. 为窗体添加其它控件,添加TextBox控件 Name为 txtname Font同Label1,添加label控件 Name为 lblHello 自选字体和前景色,添加Button控件 Name为 btnHello Font同Label1 Text为Say Hello,调整各控件的位置和大小 选择控件的几种方法 最后设置lblHello的Text 为空。,Step 3:完成程序的功能,1. 双击命令按钮进入代码编辑器,using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace SayHello public partial class frmmain : Form public frmmain() InitializeComponent(); private void btnHello_Click(object sender, EventArgs e) ,lblHello.Text = “Hello, “ + txtname.Text + “!“;,1. 什么是Namespace?,2. partial是什么意思?,读懂Form1.cs,3. 字符串可以相加!,控件到底是什么?,窗体及窗体上的控件实质是类 当向窗体上添加一个控件时实质是生成了该类的一个对象 控件的属性(Property)相当于类的数据成员,表征控件的特征 控件的方法(Method)相当于类的成员函数 Windows程序运行的奥秘:事件(Event)驱动机制 属性、方法、事件是构成控件的三大要素,什么是名空间?,假设一个工程由三个文件组成: test1.c myhead1.h myhead2.h,目的:名空间的目的是为了减少全局名称冲突的可能性。,名空间1 ,类1 ,函数1 ,语句1,语句2,语句n,函数2,函数2,数据成员,名空间的定义,格式:namesapce 空间名 ,/myhead1.h namespace ONE class A namesapce THREE class B namespace ONE.FOUR namespace ONE ,名空间的定义可以嵌套。 名空间的定义可以扩展。,名空间成员的访问,格式:空间名:成员名 例如:ONE:A、ONE:THREE:B 用using声明语句 例如:using ONE后可直接使用A,using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace SayHello public partial class frmmain : Form public frmmain() InitializeComponent(); private void btnHello_Click(object sender, EventArgs e) ,partial,Partial 部分的;不完全,程序的存储目录结构,D:testVC2008,MySolution,SayHello,MySolution.sln,bin,Debug,SayHello.exe,Form1.Designer.cs的部分内容,namespace SayHello partial class frmmain / label1 / this.label1.AutoSize = true; this.label1.Font = new System.Drawing.Font(“Times New Roman“, 26.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, (byte)(0); this.label1.Location = new System.Drawing.Point(24, 19); this.label1.Name = “label1“; this.label1.Size = new System.Drawing.Size(198, 40); this.label1.TabIndex = 0; this.label1.Text = “Your Name:“; ,/ btnHello / this.btnHello.Font = new System.Drawing.Font(“Times New Roman“, 26.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, (byte)(0); this.btnHello.Location = new System.Drawing.Point(173, 231); this.btnHello.Name = “btHello“; this.btnHello.Size = new System.Drawing.Size(233, 54); this.btnHello.TabIndex = 3; this.btnHello.Text = “Say ,事件驱动是怎么做到的?,程序执行的流程,Main函数位于Program.cs中; 在Main函数中创建了一个frmmain类型的对象 在frmmain的构造函数里调用了 InitializeComponent()函数 在InitializeComponent()函数创建frmmain的各数据成员(即窗体上的各个控件),并对其属性进行设置,将一些函数绑定到事件上。 等待事件的发生(事件驱动) 执行相应的函数 等待其它事件发生,如何简化这一复杂又相对固定的流程? 所谓可视化设计不过是源程序的一种图形化的表示方法。使设计更为简便。 反之,源文件是对窗体及之上的控件文本化的描述。 简化程序的设计,使开发Windows应用程序变得容易,使我们把更多的精力关注到程序的功能上去。,小 结,可视化编程的两大步骤 画程序界面 编写程序功能 请熟悉visual studio2008的开发环境; 请掌握控件的添加、删除、移动、更改大小等操作; 请熟悉控件属性的设置方法 在设计阶段可通过属性窗口设置 在运行阶段可通过语句动态修改,作 业,请列举出Form、label、textbox、button控件各有哪些常用的属性、方法、事件? 请提出“Hello World”这个程序还有什么不足之处,并设想改进的方法。,推荐参考数目,赵增敏编著,电子工业出版社,吕伟臣等,清华大学出版社,沈建蓉主编,复旦大学出版社,最好的老师:网络 Microsoft Developer Network,