第六章Windows应用程序.ppt

上传人:sccc 文档编号:5049669 上传时间:2023-05-31 格式:PPT 页数:53 大小:618.05KB
返回 下载 相关 举报
第六章Windows应用程序.ppt_第1页
第1页 / 共53页
第六章Windows应用程序.ppt_第2页
第2页 / 共53页
第六章Windows应用程序.ppt_第3页
第3页 / 共53页
第六章Windows应用程序.ppt_第4页
第4页 / 共53页
第六章Windows应用程序.ppt_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《第六章Windows应用程序.ppt》由会员分享,可在线阅读,更多相关《第六章Windows应用程序.ppt(53页珍藏版)》请在三一办公上搜索。

1、第六章 Windows应用程序,6.1 Windows应用程序开发步骤,.NET中提供了一系列用于编写基于Windows应用程序的类,其中最主要的是窗口和控件类。可以是窗体(Form),对话框(Dialog)或者多文档界面(Multiple Document Interface,MDI。界面设计是应用程序设计中的基础工作,也将予以说明。设计和开发Windows应用程序的步骤如下:1)、建立项目,创建窗体。2)、根据需要添加控件并进行界面设计,属性设计。3)、响应事件,设计代码等。每个类型的控件都有自己的属性集,方法和事件,以使得该控件适合于特定的用途。,6.1.1建立项目,创建窗体,新建项目后

2、,创建窗体有两种方式:分别是直接编写代码和更为简单的利用软件直观的设计版面并自动生成代码,编写代码需要声明一个Form类并实例化。,1、创建Windows应用程序1)从菜单栏中选择【文件】|【新建】|【项目】命令,在【新建项目】对话框的左栏中选择【Visual C#】项目,在右栏【模板】中选择【Windows应用程序】选项,在【名称】文本框中输入“FirstWinApp”。2)单击【确定】按钮,将生成新建的项目。,2、Windows应用程序代码结构用鼠标在Form1上右击,从弹出的快捷菜单中选择View Code命令。,1)Form1.cs,a.引入类库using System;/引入核心命名

3、空间,是一切类的基础 using System.Collections.Generic;/引入集合类命名空间,能够使用泛型类等集合类 using System.ComponentModel;/引入ComponentModel命名空间 using System.Data;/引入数据操作命名空间,能够使用如DataSet数据集类 using System.Drawing;/引入绘图命名空间,能够使用如Color的类 using System.Text;/引入文本操作命名空间,能够使用如StringBuilder、字符操作等类 using System.Windows.Forms;/引入窗体命名空间

4、,支持窗体相关的类 引用命名空间为的就是能够直接使用隶属于对应命名空间内的类。,b.命名空间命名空间是一种组织相关类和其他类型的方式.与文件或组件不同,命名空间是一种逻辑组合,而不是物理组合.namespace WindowsFormsApplication1,c.定义一个窗体类 public partial class Form1:Form public Form1()InitializeComponent();其中InitializeComponent();是在Form1.Designer.cs文件中定义的构造函数。,2)Form1.Designer.cs 将的Form1.cs前的“+”号

5、打开,会看到Form1.Designer.cs文件,双击打开它,看到所示代码,在代码中看到“Windows 窗体设计器生成的代码”标记框,在其中隐藏着窗体设计器自动生成的代码。,Windows 窗体设计器生成的代码,加号,Form1.Designer.cs,单击其左侧灰色线条的加号,将展开如下代码:,对#region和#endregion之间的代码最好不要自己改动,它包含的是较为底层的代码,由窗体设计器根据用户操作自动修改。,3)Program.cs文件:,静态类 Program,应用程序的入口,6.1.2 添加控件及控件布局,控件是包含在窗体对象内的对象,用于显示信息或接收输入。添加控件有两

6、种方式:1)编写代码实现添加控件,就是声明一个控件类的子类并实例化。例如,生成一个Button控件的代码:Button myButton=new Button();/声明一个控件类的对象并初始化 myButton.Location=new Point(20,20);/指定该控件位置 this.Control.Add(myButton);/添加该控件2)利用设计器添加控件并生成代码,步骤如下:a、新建窗体。b、在工具箱中,单击所要添加的控件名。c、在窗体上,单击所要控件左上角的位置,然后拖动至所要控件右下角位置,即可添加一个自定义位置的控件。,1、控件放置可以使用三种方式排列窗体上的控件:1)将

7、控件拖动到窗体上之后,使用“属性”窗口的Location属性来精确地设置位置。2)通过将控件拖动到窗体的特定位置来手动移动控件。3)通过编程实现。例如myButton的定位,可以指定其Location:myButton.Location=new Point(100,100);其中第一个数字是指到左边界的距离 第二个数字是指到上边界的距离。可以修改其位置,如myButton.Left=200或者myButton.Top+=100。,2、对齐控件对控件进行排列,使它们与窗体的某一个边缘对齐。还可以将这些控件与窗体上已有的其它控件对齐。甚至可以将这些控件设置为每次调整应用程序大小时都会自动调整大小。

8、为了对齐控件,以将其附加到窗体的边缘,就是要使控件与窗体边缘对齐。这种方式称为“停靠”控件。Dock属性。对于将控件与其他控件对齐的方法,可以通过拖动某个控件,将此控件与窗体上的其他控件对齐。如果在现有控件的相同区域内拖动窗体上的控件,则会看到有蓝色线条出现。这些线条是参考线,可以轻松而准确地查看放置控件的位置,以将控件与现有控件对齐。,3、控件分层当创建复杂的用户界面或者使用MDI窗体时,通常要将控件和子窗体分层,以便创建更复杂的界面。具体方法如下:1)、在设计时将控件分层:选定要被分层的控件,在“格式”菜单下选择顺序,单击“置于顶层”或者“置于底层”。2)、以编程方式将控件分层:使用Bri

9、ngToFront和SendToBack方法操作Z顺序。所谓Z顺序,就是窗体上的控件沿窗体的Z轴(深度)方向的可视化分层顺序,位于Z顺序顶层的窗口重叠在所有其他窗口之上。例如,myButton置于顶层的代码是:myButton.BringToFront()。,4、调整控件大小1)拖拽“缩放控点”。2)如果需要,设置Size属性设置控件的Height和Width属性,将控件的大小调整到特定尺寸。3)若要设计用户可在运行时调整窗体的大小,则该窗体上的控件应能准确地调整大小并重新定位。要达到这样的效果,可使用控件的Anchor属性。该属性定义控件的定位点位置。当控件锚定到某个窗体,若该窗体大小被调整

10、,该控件将维持它与定位点位置之间距离不变。,5、锁定控件正确定位控件后可将其锁定,避免设置其他属性时意外移动或调整大小。将控件的Locked属性设置为true即可。还可一次锁定窗体上所有的控件,以防错误移动。,6.1.3 响应事件,各种窗体和控件除了包含属性和方法以外,还各包括一些事件,不同的控件响应的事件不同,但窗体和控件对于事件的响应处理方法是相似的。以窗体事件为例,窗体事件常见的格式为:private void 窗体名_事件名(object sender,EventArgs e)事件响应代码 例:private void Form1_Load(object sender,EventArg

11、s e),窗体常见的事件有:Load事件:加载窗体时被引发。它在窗体显示之前被执行,通常进行一些初始化的工作。Activated事件:窗体获得焦点(被激活)时被引发。可以使用此事件处理一些窗体被激活时,窗体要更新的内容。Deactivate事件:窗体失去焦点时被引发。FormClosing事件:在关闭窗体时发生。如果此时不想关闭窗体,可以将传递给事件处理程序的FormClosingEventArgs参数的Cancel属性设置为true。FormClosed事件:关闭窗体后发生。以上的事件都是通过窗体设计器自行处理,用户只要给出所需事件处理方法设计即可。表6.1,6.2 Windows常用控件,

12、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 对话框类控件,6.2.1 文本类控件,文本类控件有两类:能进行编辑的:TextBox和RichTextBox;不能编辑的:Lable和LinkLable主要应用于文本显示,使文本能够以纯文本或者RTF格式显示。区别:Lable显示用户无法直接编辑的文本,而LinkLable则将文本显示为Web样式的链接,并在用户单击该特殊文本时触发事件,该文本通常是到另一个窗口或Web站点的链接。,举例 tex

13、tbox见书上59页。创建一个Windows应用程序时,设置文本框的属性值的步骤如下:1)从工具箱中移入文本框控件并调整大小。2)设置MultiLine属性值为True,即采用多行显示。3)从工具箱中引入两个命令按钮Button1和Button2,将Button1的Text属相设置为Copy,将Button2的Text属性设置为Paste。4)设置TextBox1的ScrollBars属性值为Both。下面给两个命令按钮的Click添加代码:,private void button1_Click(object sender,EventArgs e)Clipboard.SetDataObject

14、(textBox1.SelectedText);,private void button2_Click(object sender,EventArgs e)IDataObject iData=Clipboard.GetDataObject();if(iData.GetDataPresent(DataFormats.Text)textBox1.SelectedText=iData.GetData(DataFormats.Text).ToString();else textBox1.SelectedText=Could not retrieve data off the clipboard;,6.

15、2.2 按钮类控件,按钮类控件时最常用的控件:ButtonRadioButton:通常将若干个RadioButton控件放在一个GroupBox控件内组成一组,当这一组中的某个单选按钮被选中时,该组中的其他单选按钮控件将自动处于不选中状态。Checkbox,举例:RadioButton(1)在Form1.Designer.cs中添加三个变量:public int mySize;public bool myBold;public bool myItalic;(2)在Form1的Load事件中为他们设置初值。myBold=false;myItalic=false;mySize=25;(3)分别为各

16、个复选框和单选框添加Click事件的响应函数。,radioButton1:mySize=36;textBox1.Font=new System.Drawing.Font(宋体,mySize);radioButton2:mySize=25;textBox1.Font=new System.Drawing.Font(宋体,mySize);,Checkbox1:myItalic=!myItalic;textBox1.Font=new System.Drawing.Font(宋体,mySize,System.Drawing.FontStyle.Regular);if(myItalic,myBold=!

17、myBold;textBox1.Font=new System.Drawing.Font(宋体,mySize,System.Drawing.FontStyle.Regular);if(myItalic,6.2.3 框架类控件,框架类控件主要包括:面板控件(Panel)分组控件(GroupBox)它用于为其他控件提供可识别的分组。在分组框中对所有选项分组能为用户提供逻辑化的可视提示,并且在设计时所有控件可以方便地移动当移动单个GroupBox控件时,它包含的所有控件也将一起移动。多页面控件(TabControl)很像一个卡片盒或一组文件标签,将一些相关内容组织在一个选项卡中,在同一个窗口区域通过

18、选择标签转换显示不同的选项卡。举例:TabControl,相关代码:private void button1_Click(object sender,EventArgs e)if(radioButton1.Checked=true)this.BackColor=System.Drawing.Color.Red;if(radioButton2.Checked=true)this.BackColor=System.Drawing.Color.Blue;,private void button2_Click(object sender,EventArgs e)MessageBox.Show(设置没有

19、改变);Application.Exit();,6.2.4 列表框、视图类控件,列表框和视图类控件用于从列表中选择,包括ListBox、CheckedListBox、ComboBox、DomainUpDown、NumericUpDown、ListView、TreeView和DataGrid等控件。,ComboBox控件组合列表框ComboBox是文本框和列表框组合而成的控件。举例ComboBox,ListView控件ListView控件用于显示项目的列表视图。可利用该控件的相关属性来安排行列、列头、标题、图标和文本。举例:ListView,TreeView控件TreeView控件用来显示信息的

20、分级视图,如同Windows中显示的文件和目录。TreeView控件中的各项信息都有一个与之相关联的Node对象。,6.2.5 滚动类控件,滚动类控件主要包括水平滚动条(HScrollBar)、垂直滚动条(VScrollBar、进)度条(ProgressBar)和跟踪条(TrackBar)。,6.2.6 工具栏和状态栏控件,工具栏(ToolBar)控件用来产生一个Windows标准工具栏,可以将一些常用的操作作为按钮放在工具栏中,工具栏控件用在窗体上的按钮,可以显示文字、图形或两者兼有。通过工具栏中的按钮(Button)对象可以和应用程序发生联系。StatuBar控件用来提供一个状态窗口,通常

21、出现在窗体的底部,通过这个控件,应用程序能显示不同种类的状态数据。状态栏用于向用户显示系统的一些状态,比如大小写情况、日期时间等,在状态栏中可以包含文本和图像。举例 ToolBar,6.2.7 定时器控件,定时器控件(Timer)也称为定时器或计时器,是按一定时间间隔周期性地自动触发事件的控件。在程序运行时,定时器是不可见的。定时器控件的默认名称为Timer,Timer2等。定时器控件主要用来计时。通过计时处理,可以实现各种复杂的动作,如延时、动画等。,1、定时器控件常用属性Enable:设置定时器是否正在运行。Interval:设置定时器开始计时两次调用控件的间隔时间(ms)。2、定时器常用

22、方法StartStop3、定时器常用事件Tick:当定时器处于启动状态时,每隔一个Interval时间,触发一次该事件。4、举例:倒计时 timer1,6.2.8菜单控件,早期版本的VisualStudio(VisualStudio2003及以前版本)中菜单控件为MainMenu。MenuStrip控件是VisualStudio 2005中的新功能。使用该控件,可以轻松创建MicrosoftOffice中那样的菜单。MenuStrip控件支持多文档界面(MDI)和菜单合并、工具提示等。可以通过添加访问键、快捷键、选中标记、图像和分隔条,来增强菜单的可用性和可读性。MenuStrip控件取代了M

23、ainMenu控件并向其中添加了新功能,但是也可选择保留MainMenu控件以备向后兼容。使用MenuStrip控件可以:创建支持高级用户界面和布局功能的易自定义的常用菜单,例如文本和图像排序和对齐、拖放操作、MDI、溢出和访问菜单命令的其他模式;支持操作系统的典型外观和行为。对所有容器和包含的项进行事件的一致性处理,处理方式与其他控件的事件相同。举例:mainmenu,6.2.9 对话框类控件,对话框控件包含了系统定义的几个标准的对话框,如颜色选择、字体选择、打开文件、存储文件等,它们的名字和功能如下:ColorDialog:显示允许用户设置界面元素颜色的颜色选择器对话框。FontDialo

24、g:显示允许用户设置字体及其属性的对话框。OpenFileDialog:显示允许用户定位文件和选择文件的对话框。SaveFileDialog:显示允许用户保存文件的对话框。PrintDialog:显示允许用户选择打印机,并设置其属性的对话框。PrintPreviewDialog:显示一个对话框,该对话框显示PrintDocument对象打印时的样子。PageSetUpDialog:显示允许用户设置打印页面属性的对话框。,如打开文件的典型代码如下private void button1_Click(object sender,EventArgs e)if(openFileDialog1.Show

25、Dialog()=DialogResult.OK)label1.Text=选择打开的文件是n+openFileDialog1.FileName;打开存储文件对话框的代码如下:private void button2_Click(object sender,EventArgs e)if(saveFileDialog1.ShowDialog()=DialogResult.OK)label2.Text=保存在+saveFileDialog1.FileName;,打开颜色对话框代码如下:private void button3_Click(object sender,EventArgs e)if(co

26、lorDialog1.ShowDialog()=DialogResult.OK)label3.BackColor=colorDialog1.Color;打开字体对话框代码如下:private void button4_Click(object sender,EventArgs e)if(fontDialog1.ShowDialog()=DialogResult.OK)textBox1.Font=fontDialog1.Font;,6.3多文档界面(MDI),多文档界面(multiple document interface,MDI)应用程序能同时显示多个文档,每个文档显示在各自的窗体中。MDI

27、应用中的应用程序窗体称为父窗体,应用程序内部的窗体称为子窗体。父窗体和子窗体通常提供不同的功能。一个MDI应用可以有多个子窗体,但每个子窗体只能有一个父窗体。处于活动状态的子窗体数不能超过一个,子窗体本身不能再成为父窗体,而且不能移动到它们的父窗体区域之外。除此之外,子窗体的行为与其它任何窗体一样,可以最大化、最小化、移动等等。MDI中的一个父窗体可以有多个相同功能的子窗体,也可以有多个功能不同的子窗体。,6.3.1 创建MDI父窗体,多文档界面(MDI)应用程序的基础是MDI父窗体,它是包含MDI子窗体的窗体,MDI子窗体是用户与MDI应用程序在其中进行交互的子窗体。在设计时创建MDI父窗体

28、,与一般窗体的创建方法相同:1)、建立一个Windows应用程序。2)、在“属性”窗口中,将自动生成的Form1窗体改名为parent,并将其IsMdiContainer属性设置为“True”。这将该窗体指定为子窗体的MDI容器。,6.3.2 创建MDI子窗体,MDI子窗体是多文档界面(MDI)应用程序的必要元素,因为这些窗体是用户交互的中心。建立MDI子窗体的步骤如下:见书129页。,6.3.3 确定活动的MDI子窗体,有时需要提供一个在控件上操作的命令,而该控件在当前活动的子窗体上具有焦点。例如,假设要将子窗体文本框中的选定文本复制到剪贴板。可以创建这样一个过程:使用标准“编辑”菜单上“复

29、制”菜单项的Click事件将选定的文本复制到剪贴板。因为一个MDI应用程序可以有同一个子窗体的多个实例,因此该过程需要知道使用哪个窗体。若要指定正确的窗体,可以使用ActiveMdiChild属性,该属性返回具有焦点的或最近活动的子窗体。当窗体上有数个控件时,还需要指定哪个控件是活动的。与ActiveMdiChild属性一样,ActiveControl属性返回活动子窗体中具有焦点的控件。,6.3.4 排列子窗体,应用程序常包含对打开的MDI子窗体进行操作的菜单命令,如“平铺”、“层叠”和“排列”。可在MDI父窗体中使用LayoutMdi方法和MdiLayout枚举重新排列子窗体。LayoutMdi 方法可以使用四个不同MdiLayout枚举值中的一个层叠、水平平铺或垂直平铺,或者显示为排列在 MDI 窗体下部的子窗体图标。这些方法常用作由菜单项的Click事件调用的事件处理程序。这样,文本为“层叠窗口”的菜单项可在MDI子窗体上产生所需的效果。,表6-2 子窗体排列方式表,表6-2 子窗体排列方式表,6.4 实例解析,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号