




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 .net中提供了一系列用于编写基于windows应用程序的类,其中最主要的是窗口和控件类。可以是窗体(form),对话框(dialog)或者多文档界面(multiple document interface, mdi。界面设计是应用程序设计中的基础工作,也将予以说明。 设计和开发windows应用程序的步骤如下: 1)、建立项目,创建窗体。 2)、根据需要添加控件并进行界面设计,属性设计。 3)、响应事件,设计代码等。每个类型的控件都有自己的属性集,方法和事件,以使得该控件适合于特定的用途。 新建项目后,创建窗体有两种方式:分别是直接编写代码和更为简单的利用软件直观的设计版面并自动生成代码,
2、编写代码需要声明一个form类并实例化。1、创建windows应用程序1)从菜单栏中选择【文件】|【新建】|【项目】命令,在【新建项目】对话框的左栏中选择【visual c#】项目,在右栏【模板】中选择【windows应用程序】选项,在【名称】文本框中输入“firstwinapp”。2)单击【确定】按钮,将生成新建的项目。2、windows应用程序代码结构用鼠标在form1上右击,从弹出的快捷菜单中选择view code命令。1) form1.csa.引入类库 using system;/引入核心命名空间,是一切类的基础 using system.collections.generic ;/引
3、入集合类命名空间,能够使用泛型类等集合类 using system.componentmodel;/引入componentmodel命名空间 using system.data; /引入数据操作命名空间,能够使用如dataset数据集类 using system.drawing ;/引入绘图命名空间,能够使用如color的类 using system.text; /引入文本操作命名空间,能够使用如stringbuilder、字符操作等类 using system.windows.forms; /引入窗体命名空间,支持窗体相关的类 引用命名空间为的就是能够直接使用隶属于对应命名空间内的类。 b.
4、命名空间命名空间 命名空间是一种组织相关类和其他类型的方式.与文件或组件不同,命名空间是一种逻辑组合,而不是物理组合.namespace windowsformsapplication1 c.定义一个窗体类 public partial class form1 : form public form1() initializecomponent(); 其中initializecomponent();是在form1.designer.cs文件中定义的构造函数。2) form1.designer.cs 将的form1.cs前的“+”号打开,会看到form1.designer.cs文件,双击打开它,看
5、到所示代码,在代码中看到“windows 窗体设计器生成的代码”标记框,在其中隐藏着窗体设计器自动生成的代码。windows 窗体设计器生成的代码窗体设计器生成的代码加号加号form1.designer.cs单击其左侧灰色线条的加号,将展开如下代码:对对#region和和#endregion之间的代码最好不要自己改动,之间的代码最好不要自己改动,它包含的是较为底层的代码,由窗体设计器根据用户它包含的是较为底层的代码,由窗体设计器根据用户操作自动修改。操作自动修改。3) program.cs文件:静态类静态类 program应用程序的应用程序的入口入口控件是包含在窗体对象内的对象,用于显示信息或
6、接收输入。添加控件有两种方式: 1)编写代码实现添加控件编写代码实现添加控件,就是声明一个控件类的子类并实例化。 例如,生成一个button控件的代码: button mybutton = new button();/声明一个控件类的对象并初始化 mybutton.location=new point(20,20);/指定该控件位置 this.control.add(mybutton);/添加该控件 2)利用设计器添加控件并生成代码,利用设计器添加控件并生成代码,步骤如下: a、新建窗体。 b、在工具箱中,单击所要添加的控件名。 c、在窗体上,单击所要控件左上角的位置,然后拖动至所要控件右下角
7、位置,即可添加一个自定义位置的控件。1、控件放置、控件放置可以使用三种方式排列窗体上的控件: 1)将控件拖动到窗体上之后,使用“属性”窗口的location属性来精确地设置位置。 2)通过将控件拖动到窗体的特定位置来手动移动控件。 3)通过编程实现。 例如mybutton的定位,可以指定其location:mybutton.location=new point(100,100); 其中第一个数字是指到左边界的距离 第二个数字是指到上边界的距离。 可以修改其位置,如mybutton.left=200或者mybutton.top+=100。2、对齐控件、对齐控件 对控件进行排列,使它们与窗体的某一
8、个边缘对齐。还可以将这些控件与窗体上已有的其它控件对齐。甚至可以将这些控件设置为每次调整应用程序大小时都会自动调整大小。 为了对齐控件,以将其附加到窗体的边缘,就是要使控件与窗体边缘对齐。这种方式称为“停靠”控件。 dock属性。属性。 对于将控件与其他控件对齐的方法,可以通过拖动某个控件,将此控件与窗体上的其他控件对齐。如果在现有控件的相同区域内拖动窗体上的控件,则会看到有蓝色线条出现。这些线条是参考线,可以轻松而准确地查看放置控件的位置,以将控件与现有控件对齐。3、控件分层、控件分层 当创建复杂的用户界面或者使用mdi窗体时,通常要将控件和子窗体分层,以便创建更复杂的界面。 具体方法如下:
9、 1)、 在设计时将控件分层:选定要被分层的控件,在“格式”菜单下选择顺序,单击“置于顶层”或者“置于底层”。 2)、 以编程方式将控件分层:使用bringtofront和sendtoback方法操作z顺序。 所谓z顺序,就是窗体上的控件沿窗体的z轴(深度)方向的可视化分层顺序,位于z顺序顶层的窗口重叠在所有其他窗口之上。例如,mybutton置于顶层的代码是:mybutton. bringtofront()。4、调整控件大小、调整控件大小 1)拖拽“缩放控点”。 2)如果需要,设置size属性设置控件的height和width属性,将控件的大小调整到特定尺寸。 3)若要设计用户可在运行时调整
10、窗体的大小,则该窗体上的控件应能准确地调整大小并重新定位。要达到这样的效果,可使用控件的anchor属性。该属性定义控件的定位点位置。当控件锚定到某个窗体,若该窗体大小被调整,该控件将维持它与定位点位置之间距离不变。5、锁定控件、锁定控件 正确定位控件后可将其锁定,避免设置其他属性时意外移动或调整大小。将控件的locked属性设置为true即可。还可一次锁定窗体上所有的控件,以防错误移动。 各种窗体和控件除了包含属性和方法以外,还各包括一些事件,不同的控件响应的事件不同,但窗体和控件对于事件的响应处理方法是相似的。 以窗体事件为例,窗体事件常见的格式为: private void 窗体名_事件
11、名(object sender, eventargs e) 事件响应代码 例: private void form1_load(object sender, eventargs e) 窗体常见的事件有: load事件:加载窗体时被引发。它在窗体显示之前被执行,通常进行一些初始化的工作。 activated事件:窗体获得焦点(被激活)时被引发。可以使用此事件处理一些窗体被激活时,窗体要更新的内容。 deactivate事件:窗体失去焦点时被引发。 formclosing事件:在关闭窗体时发生。如果此时不想关闭窗体,可以将传递给事件处理程序的formclosingeventargs参数的cance
12、l属性设置为true。 formclosed事件:关闭窗体后发生。 以上的事件都是通过窗体设计器自行处理,用户只要给出所需事件处理方法设计即可。表6.1 6.2.1 文本类控件 6.2.2 按钮类控件 6.2.3 框架类控件 6.2.4 列表框、视图类控件 6.2.5 滚动类控件 6.2.6 工具栏和状态栏控件 6.2.7 定时器控件 6.2.8 菜单控件 6.2.9 对话框类控件 文本类控件有两类: 能进行编辑的:textbox和richtextbox; 不能编辑的: lable和linklable主要应用于文本显示,使文本能够以纯文本或者rtf格式显示。 区别:lable显示用户无法直接编
13、辑的文本,而linklable则将文本显示为web样式的链接,并在用户单击该特殊文本时触发事件,该文本通常是到另一个窗口或web站点的链接。举例 textbox 见书上59页。 创建一个windows应用程序时,设置文本框的属性值的步骤如下: 1)从工具箱中移入文本框控件并调整大小。 2)设置multiline属性值为true,即采用多行显示。 3)从工具箱中引入两个命令按钮button1和button2,将button1的text属相设置为copy,将button2的text属性设置为paste。 4)设置textbox1的scrollbars属性值为both。下面给两个命令按钮的click
14、添加代码: private void button1_click(object sender, eventargs e) clipboard.setdataobject(textbox1.selectedtext); private void button2_click(object sender, eventargs e) idataobject idata= clipboard.getdataobject(); if (idata.getdatapresent(dataformats.text) textbox1.selectedtext = idata.getdata(dataforma
15、ts.text).tostring(); else textbox1.selectedtext = could not retrieve data off the clipboard; 按钮类控件时最常用的控件: button radiobutton:通常将若干个radiobutton控件放在一个groupbox控件内组成一组,当这一组中的某个单选按钮被选中时,该组中的其他单选按钮控件将自动处于不选中状态。 checkbox举例:radiobutton(1)在form1.designer.cs中添加三个变量: public int mysize; public bool mybold; pub
16、lic bool myitalic;(2)在form1的load事件中为他们设置初值。 mybold = false; myitalic = false; mysize = 25;(3)分别为各个复选框和单选框添加click事件的响应函数。radiobutton1 : mysize = 36; textbox1.font = new system.drawing.font(宋体, mysize); radiobutton2: mysize = 25; textbox1.font = new system.drawing.font(宋体, mysize); checkbox1: myitalic
17、 = !myitalic; textbox1.font = new system.drawing.font(宋体, mysize, system.drawing.fontstyle.regular); if (myitalic & mybold) textbox1.font = new system.drawing.font(宋体, mysize, system.drawing.fontstyle.italic); else if (myitalic) textbox1.font=new system.drawing.font(宋体,mysize, system.drawing.fon
18、tstyle.italic); else if (mybold) textbox1.font=new system.drawing.font (宋体,mysize,system.drawing.fontstyle.bold); mybold = !mybold;textbox1.font = new system.drawing.font(宋体, mysize, system.drawing.fontstyle.regular);if (myitalic & mybold)textbox1.font = new system.drawing.font(宋体, mysize, syste
19、m.drawing.fontstyle.bold);else if (myitalic) textbox1.font = new system.drawing.font(宋体, mysize, system.drawing.fontstyle.italic); else if (mybold) textbox1.font = new system.drawing.font(宋体, mysize, system.drawing.fontstyle.bold); 框架类控件主要包括: 面板控件(panel) 分组控件(groupbox)它用于为其他控件提供可识别的分组。在分组框中对所有选项分组能为
20、用户提供逻辑化的可视提示,并且在设计时所有控件可以方便地移动当移动单个groupbox控件时,它包含的所有控件也将一起移动。 多页面控件(tabcontrol)很像一个卡片盒或一组文件标签,将一些相关内容组织在一个选项卡中,在同一个窗口区域通过选择标签转换显示不同的选项卡。 举例:tabcontrol 相关代码: private void button1_click(object sender, eventargs e) if (radiobutton1.checked = true) this.backcolor = system.drawing.color.red; if (radiobu
21、tton2.checked = true) this.backcolor = system.drawing.color.blue; private void button2_click(object sender, eventargs e) messagebox.show(设置没有改变); application.exit(); 列表框和视图类控件用于从列表中选择,包括listbox、checkedlistbox、combobox、domainupdown、numericupdown、listview、treeview和datagrid等控件。combobox控件 组合列表框combobox是
22、文本框和列表框组合而成的控件。 举例comboboxlistview控件 listview控件用于显示项目的列表视图。可利用该控件的相关属性来安排行列、列头、标题、图标和文本。 举例: listviewtreeview控件 treeview控件用来显示信息的分级视图,如同windows中显示的文件和目录。treeview控件中的各项信息都有一个与之相关联的node对象。 滚动类控件主要包括水平滚动条(hscrollbar )、垂直滚动条(vscrollbar 、进)度条(progressbar)和跟踪条(trackbar)。 工具栏(toolbar)控件用来产生一个windows标准工具栏,可
23、以将一些常用的操作作为按钮放在工具栏中,工具栏控件用在窗体上的按钮,可以显示文字、图形或两者兼有。通过工具栏中的按钮(button)对象可以和应用程序发生联系。 statubar控件用来提供一个状态窗口,通常出现在窗体的底部,通过这个控件,应用程序能显示不同种类的状态数据。 状态栏用于向用户显示系统的一些状态,比如大小写情况、日期时间等,在状态栏中可以包含文本和图像。 举例 toolbar 定时器控件(timer)也称为定时器或计时器,是按一定时间间隔周期性地自动触发事件的控件。在程序运行时,定时器是不可见的。定时器控件的默认名称为timer,timer2等。 定时器控件主要用来计时。通过计时
24、处理,可以实现各种复杂的动作,如延时、动画等。 1、定时器控件常用属性 enable:设置定时器是否正在运行。 interval:设置定时器开始计时两次调用控件的间隔时间(ms)。 2、定时器常用方法 start stop 3、定时器常用事件 tick:当定时器处于启动状态时,每隔一个interval时间,触发一次该事件。 4、举例 :倒计时 timer1早期版本的 visual studio(visual studio2003及以前版本)中菜单控件为mainmenu。menustrip 控件是 visual studio 2005中的新功能。使用该控件,可以轻松创建 microsoft of
25、fice 中那样的菜单。menustrip 控件支持多文档界面 (mdi) 和菜单合并、工具提示等。可以通过添加访问键、快捷键、选中标记、图像和分隔条,来增强菜单的可用性和可读性。 menustrip 控件取代了 mainmenu 控件并向其中添加了新功能,但是也可选择保留mainmenu 控件以备向后兼容。 使用 menustrip 控件可以:创建支持高级用户界面和布局功能的易自定义的常用菜单,例如文本和图像排序和对齐、拖放操作、mdi、溢出和访问菜单命令的其他模式;支持操作系统的典型外观和行为。对所有容器和包含的项进行事件的一致性处理,处理方式与其他控件的事件相同。举例:mainmenu对
26、话框控件包含了系统定义的几个标准的对话框,如颜色选择、字体选择、打开文件、存储文件等,它们的名字和功能如下: colordialog:显示允许用户设置界面元素颜色的颜色选择器对话框。 fontdialog:显示允许用户设置字体及其属性的对话框。 openfiledialog:显示允许用户定位文件和选择文件的对话框。 savefiledialog:显示允许用户保存文件的对话框。 printdialog:显示允许用户选择打印机,并设置其属性的对话框。 printpreviewdialog:显示一个对话框,该对话框显示printdocument对象打印时的样子。 pagesetupdialog:显示
27、允许用户设置打印页面属性的对话框。如打开文件的典型代码如下private void button1_click(object sender, eventargs e) if (openfiledialog1.showdialog() = dialogresult.ok) label1.text = 选择打开的文件是n + openfiledialog1.filename; 打开存储文件对话框的代码如下: private void button2_click(object sender, eventargs e) if (savefiledialog1.showdialog() = dialog
28、result.ok) label2.text = 保存在 + savefiledialog1.filename; 打开颜色对话框代码如下: private void button3_click(object sender, eventargs e) if (colordialog1.showdialog() = dialogresult.ok) label3.backcolor = colordialog1.color; 打开字体对话框代码如下:private void button4_click(object sender, eventargs e) if (fontdialog1.show
29、dialog() = dialogresult.ok) textbox1.font = fontdialog1.font; 多文档界面 (multiple document interface,mdi) 应用程序能同时显示多个文档,每个文档显示在各自的窗体中。mdi应用中的应用程序窗体称为父窗体,应用程序内部的窗体称为子窗体。父窗体和子窗体通常提供不同的功能。 一个mdi应用可以有多个子窗体,但每个子窗体只能有一个父窗体。处于活动状态的子窗体数不能超过一个,子窗体本身不能再成为父窗体,而且不能移动到它们的父窗体区域之外。除此之外,子窗体的行为与其它任何窗体一样,可以最大化、最小化、移动等等。mdi中的一个父窗体可以有多个相同功能的子窗体,也可以有多个功能不同
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工程经济的资金管理策略试题及答案
- 唾液腺黏液囊肿
- 美术雕刻土豆课件
- 工程经济运营管理试题及答案
- 2025年工程项目管理个人能力提升试题及答案
- 工程项目管理产品生命周期试题及答案
- 物流管理信息系统设计
- 初中寒假交通安全教育
- 工程经济学前沿问题试题及答案
- 艺考教育创业计划书
- “校园之星”评选实施方案
- 部编版二年级下册语文园地八(完美版)教学设计1
- 《安全生产法培训课件》(2021版)
- 库车中原石油化工有限公司11万吨年凝析油分离及轻烃芳构化项目环境影响评价报告书
- 石膏板吊顶施工方案
- WORD VBA编程 从零开始学VBA
- 机动车检测站可行性研究报告-建设机动车检测站可行性报告
- 高二英语外研版选择性必修三U4 AI:a real threat教学课件(精编)
- 投标函(格式范本)
- stype kit操作手册第一步调整水平平衡仪
- 2022年10月上海闵行职业技术学院公开招聘优秀高校教师笔试题库(答案解析)
评论
0/150
提交评论