部分Windowss开发.ppt_第1页
部分Windowss开发.ppt_第2页
部分Windowss开发.ppt_第3页
部分Windowss开发.ppt_第4页
部分Windowss开发.ppt_第5页
已阅读5页,还剩177页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第2部分 Windows Forms开发,卓文华讯 化学工业出版社,第二部分 创建经典的Windows程序Windows Forms开发,第14章 Windows Forms介绍 第15章 基本控件 第16章 Windows Forms高级应用 第17章 熟练使用通用窗口 第18章 图形图像程序设计 第19章 在程序中访问数据库 第20章 LINQ技术,第14章 Windows Forms介绍,14.1 Windows Forms程序概述 14.2 Windows Forms项目概述 14.3 管理Windows Forms项目 14.4 创建简单的Windows应用程序 14.5 小结,14

2、.1 Windows Forms程序概述,Windows Forms,指能够在Microsoft操作系统平台上运行的,有着友好界面外观(如窗体、菜单、控件等)的程序。 启动程序 Windows Forms窗体应用程序与控制台应用程序有很大的不同,但是程序的入口是相同的,均为Main函数。在Windows Forms应用程序中,Main函数也是应用程序中要执行的第一个函数。 下列代码是C#中一个非常简单的启动Windows程序的例子。 static public void Main() Application.Run(new Form1(); ,14.1 Windows Forms程序概述,窗体

3、:Windows操作系统最主要的成功源于其友好的外观,即窗体。在Windows Forms应用程序中创建窗体需使用System.Windows.Forms.Form类或其派生类创建一个Forms对象。 事件:每一个Windows控件都拥有大量的事件,使其可以达到与用户交互的目的。事件的监视及管理由前面所介绍的Application类负责。开发人员就是通过编写事件的响应方法,即事件所引发的操作,来达到对程序进行控制及交互的目的。,14.1 Windows Forms程序概述,事件响应的方法 :在.NET中,事件的声明是通过event(事件)关键字来声明的。事件的响应及处理是通过一个delegat

4、e(委托)来处理的。 如果想为一个事件添加多个相应方法,可以使用“+=”(加等于)操作符;同时,还可以通过非常简单的“-=”(减等于)操作符取消这些响应方法。 示例: button1.Click += new System.EventHandler(MyMethod); void MyMethod(object sender, System.EventArgs e);,14.2.1 新建Windows Forms项目,当创建Windows Forms新项目时,就相当于新建了一个工程。 步骤: 启动Microsoft Visual Studio 2008 在菜单栏中单击【文件】|【新建】|【项目

5、】命令,弹出【新建项目】窗口 ,在【新建项目】窗口中,可以选择“项目类型”,在【名称】文本框中可以输入项目名称,在【位置】文本框中输入项目保存的位置,也可以单击【浏览】按钮查找要保存的位置。 单击【确定】按钮就创建了一个Windows Forms项目,在窗体设计器中显示一个默认窗体Form1。 在菜单栏中单击【文件】|【全部保存】命令,即可保存项目。,14.2.1 新建Windows Forms项目,项目保存路径下的各文件夹及文件说明如下: bin文件夹:包含debug子目录及WindowsApplication1.exe文件和WindowsApplication1.pdb文件。.exe文件为

6、生成的可执行文件,.pdb文件包含完整的调试信息。 obj文件夹:包含debug子目录,含有编译过程中生成的中间代码。 Properties文件夹:包含AssemblyInfo.cs文件,它是在创建项目过程中自动添加的。此文件包含程序集属性的设置。 Resources文件夹:包含项目所需的资源文件。 Program.cs文件:应用程序文件,包含应用程序代码。 Form1.cs:窗体文件,包含窗体代码。 Form1.Designer.cs:与窗体及控件有关的代码。 Form1.resx:Windows窗体资源编辑器生成的资源文件。 WindowsApplication1.csproj:项目文件。

7、 WindowsApplication1.sln:解决方案文件。,14.2.2 打开已有的Windows Forms项目,步骤: 启动Microsoft Visual Studio 2008 。 在菜单栏中单击【文件】|【打开】|【项目/解决方案】命令,弹出【打开项目】窗口,选择要打开的项目的文件(扩展名为.sln) 。 单击【打开】按钮后,就打开了一个已有的Windows Forms项目,14.3 管理Windows Forms项目,14.3.1 向项目添加窗体 步骤: 在解决方案资源管理器中,右击项目名称,在右键快捷菜单中单击【添加】|【Windows窗体】命令,或者在菜单栏中单击【项目】

8、|【添加Windows窗体】命令,均可弹出【添加新项】窗口。 在该窗口的【模板】列表框中选择“Windows窗体”,在【名称】文本框中输入窗体的名字,默认为Form2、Form3等。单击【添加】按钮,即可向项目中添加一个窗体。,14.3.2 修改窗体属性,当一个Windows Forms项目被创建,系统会为窗体设置默认属性。如果要修改窗体的属性,一般有如下两种方法。 通过【属性】窗口修改窗体的属性。 在程序代码中通过修改代码修改窗体的属性。 大部分属性既可以通过【属性】窗口修改,又可以通过代码修改,而有些属性只能在程序中通过修改代码来修改。,14.3.2 修改窗体属性,打开【属性】窗口的方法有

9、很多,既可以通过在菜单栏中单击【视图】|【属性】命令,也可以先选中窗体并右击,在右键快捷菜单中单击【属性】命令,还可以通过快捷键【Ctrl】+【W】+【P】。,14.3.3 窗体常见的属性、方法和事件,窗体属性:标题栏、窗体名称、窗体大小、颜色、边框、显示位置、背景图片和起始位置 。 标题栏 :由窗体的Text属性决定,默认的标题为Form1、Form2、Form3等 。 窗体名称:Name属性,该属性用于在代码中标识对象的名称 。由于Name属性要在代码中使用,Name属性只能在【属性】窗口中被修改,在代码中不能修改。,14.3.3 窗体常见的属性、方法和事件,窗体的大小由Size属性决定。

10、 窗体的背景色由BackColor属性决定 。 窗体边框由FormBorderStyle属性决定。 窗体的显示位置由Location属性决定。 窗体的背景图片由BackgroundImage属性决定 。 窗体的起始位置,即窗体初始出现时所在的位置 ,由StartPosition属性决定。 其他属性:Enabled、ControlBox、MaximizeBox、MinimizeBox、Visible、Icon、Cursor、WindowState。,14.3.3 窗体常见的属性、方法和事件,窗体方法: Show方法和Hide方法:用于显示窗体或隐藏窗体,其语法形式分别如下: 窗体名.Show(

11、) 窗体名.Hide( ) Close方法:用于关闭窗体,其语法形式如下: 窗体名.Close( ) Focus方法:用于激活窗体并给予其焦点,其语法形式如下: Public bool Focus( ),14.3.3 窗体常见的属性、方法和事件,SetBounds方法:用于设置窗体的位置和大小,其语法形式如下: Public void SetBounds(int x,int y,int width,int height) SetDesktopLocation方法:以桌面坐标设置窗体的位置。其语法形式如下: Public void SetDesktopLocation(int x,int y)

12、SetDesktopBounds方法:以桌面坐标设置窗体的边界,可以使用此方法设置桌面上窗体的位置和大小,可确保窗体在桌面上完全可见,其语法形式如下: Public void SetDesktopBounds(int x,int y, int width,int height),14.3.3 窗体常见的属性、方法和事件,窗体事件的一般语法形式如下。 Private void 窗体名_事件名(object sender, EventArgs e) 事件响应代码 其中,参数sender为事件发出者;e为事件的附加数据,事件不同,e也不同。 Load事件:加载窗体时被引发。它在窗体显示之前被执行,通

13、常进行一些初始化的工作,是比较常用的事件。 Activated事件:窗体获得焦点(被激活)时被引发。可以使用此事件处理一些窗体被激活时需要更新的内容。,14.3.3 窗体常见的属性、方法和事件,Deactivate事件:窗体失去焦点时被引发。 FormClosing事件:在关闭窗体时发生。如果此时不想关闭窗体,可以将传递给事件处理程序的FormClosingEventArgs参数的Cancel属性设置为true。 FormClosed事件:关闭窗体后发生。可以使用此事件执行一些诸如释放窗体占用的内存资源、保存输入窗体中的信息或更新其父窗体的任务。,14.3.4 继承已有窗体的方式,与派生类继承

14、基类类似,窗体也能够继承父窗体的设置、属性和控件布局等。也就是说,可以创建有标准属性的窗体作为基窗体,并基于此基窗体派生其他子窗体或继承窗体。 创建继承窗体的方法有两种,一种是通过编程方式创建继承窗体;另一种是使用继承选择器创建继承窗体。,14.3.4 继承已有窗体的方式,通过编程方式创建继承窗体 以编程方式创建继承窗体时,主要是在类定义中将引用添加到要从其继承的窗体。引用应包含基窗体的命名空间,然后是基窗体本身的名称,其语法形式如下。 class 继承窗体名称:基窗体所在命名空间名称.基窗体名称,14.3.4 继承已有窗体的方式,使用继承选择器创建继承窗体 通过继承选择器,可利用已经在其他解

15、决方案中创建的代码或用户界面。为了使用继承选择器,包含该基窗体的项目必须已生成为可执行文件或DLL。若要生成可执行文件,可以在菜单栏中单击【生成】|【生成解决方案】命令。 在解决方案资源管理器中,右击项目名称,在右键快捷菜单中单击【添加】|【新建项】命令,弹出【添加新项】窗口。 在【添加新项】窗口左侧的【类别】列表框中选择“Windows Forms”类别,在右侧【模版】列表框选择“继承的窗体”,打开继承选择器。 在继承选择器中选择添加的继承窗体的基窗体后,单击【确定】按钮,完成窗体的继承。,14.4 创建简单的Windows应用程序,一般情况下,设计创建一个Windows应用程序的步骤如下。

16、 程序需求分析。 设计类及对象。 界面设计。 为窗体及控件添加各类事件及方法。 打包发布。,14.5 小结,本章主要介绍了Windows Forms项目的基础知识,包括如何创建及打开一个Windows Forms项目,向项目添加窗体,修改窗体属性,继承已有窗体。对上述知识的了解和掌握是后续章节学习的基础。,第15章 基本控件,15.1 控件与组件概述 15.2 常用基本控件 15.3 常用容器控件 15.4 小结,15.1 控件与组件概述,在.NET Framework中,组件是指实现System.ComponentModel.IComponent接口的一个类,或是从实现IComponent接

17、口的类中直接或间接派生出的类。Visual Studio 2008提供了一系列常用组件,如BackgroundWorker组件、Timer组件、ErrorProvider组件等,用户也可以自行创建组件。 控件是用于提供(或实现)用户界面(UI)功能的组件。因此可以说,每个控件都是一个组件,但并不是每个组件都可以作为控件。 .NET Framework专门为控件提供了两个基类,一个用于Windows窗体控件,另一个用于ASP.NET服务器控件。 Visual Studio 2008提供了一些常用控件,如Label控件、Button控件、TextBox控件等,读者也可以自己创建控件。,15.2 常

18、用基本控件,15.2.1 Label控件 Label控件是Visual C#.Net的Windows Forms控件中一种常用基本控件,又称标签控件。标签控件通常是只读的,用户无法对其进行编辑,被用于显示用户不能编辑的文本或图像,即用于标识窗体上的对象。 加载Label控件 :在工具箱中,Label控件的图标是 用户双击或拖动工具箱中的Label控件,便可将Label控件加载到窗体上。,15.2.1 Label控件,Label控件的属性 : Text属性:用于设置标签控件显示的文本内容。 TextAlign属性:用于设置标签中文本的对齐方式。 AutoSize 属性:用于设置标签控件,使其动态

19、调整大小以适应其内容。 Visible属性:用于设置标签控件是否可见,包含有true和false两个属性值。,15.2.1 Label控件,BorderStyle属性:用于设置标签的边框样式,取值为BorderStyle枚举 。 TabIndex属性:用于设置标签的Tab键顺序。当使用【Tab】键访问控件时,Tab键顺序越靠前的控件越先被访问。 UseMnemonic属性:用于设置是否将控件的Text属性中的“ Cut()方法:用于将文本框中的当前选定内容移动到剪贴板, public void Cut () 使用方式如下。 textBox1.Cut(); Paste()方法:用于将文本框中的当

20、前选定内容用剪贴板中的内容替换。 public void Paste () 使用方式如下。 Textbox1.Paste(); Clear()方法:用于清空文本框,其语法形式如下。 public void Clear (),15.2.3 Button控件,Button控件是Visual C#.Net的Windows Forms控件中一种常用基本控件,又称为按钮控件。它既可以使用Text属性显示文本,也可以使用Image属性和ImageList属性显示图像。 在工具箱中,Button控件的图标为 Button控件的属性 :Text 、Image 、ImageList 、Font 、BackCol

21、or、 Enable、 FlatStyle。,15.2.3 Button控件,Button控件的事件如下。 Click事件:当用户单击命令按钮时,触发该事件。 MouseDown事件:当光标位于命令按钮上并且按下鼠标时,触发该事件。 MouseUp事件:当光标位于命令按钮上并且释放鼠标时,触发该事件。,15.2.4 CheckBox控件和RadioButton控件,CheckBox控件又称复选框,用于指示某个特定条件是处于打开状态还是处于关闭状态。 RadioButton控件又称单选按钮或选项按钮 。通常将多个单选按钮放在一个GroupBox或Panel容器控件内组成一组,这一组中的单选按钮之

22、间是互斥的,只允许用户从中选择一个,其他单选按钮将自动处于未选中状态。,15.2.4 CheckBox控件和RadioButton控件,CheckBox控件和RadioButton控件的属性 Text:设置或获取控件显示的标题内容 。 TextAlign :设置Text值的对齐方式 。 Checked :设置或获取按钮是否被选择 。 CheckAlign:设置控件中的 或 在控件中的位置。 FlatStyle:设置按钮的样式 。 CheckBox控件和RadioButton控件的事件 Click事件:当用户单击控件时,触发Click事件 。 CheckedChanged事件:当Checked值

23、改变时,触发CheckedChanged事件 。,ComboBox控件和ListBox控件都是列表选择控件,主要用于列出提供用户选择的列表,用户可以从中选择一个或多个选项。它们均派生于ListControl类,该类提供了一些基本的列表管理功能。 ListBox又称为列表框,显示一个项列表,用户可从中选择一项或多项。 ComboBox又称组合框,分两个部分显示,顶部是一个允许用户输入列表项的文本框;下面是一个列表框,它显示一个项列表,用户可从中选择一项。,15.2.5 ComboBox控件和ListBox控件,ListBox控件的属性 : MultiColumn属性:设置列表框是否支持多行显示。

24、 ScrollAlwaysVisible属性:设置滚动条是否显示。 SelectionMode属性:设置一次可以选择多少列表项。(None,One,MultiSimple,MultiExtended) Sorted属性:设置列表框中的各项是否按字母顺序排序 。 Items属性:设置存储在列表框中的所有项,是一个集合属性,完成列表框的数据添加工作。,15.2.5 ComboBox控件和ListBox控件,SelectedIndex属性:获取当前选定项的索引,只能在程序中使用该属性。 listBox1.ItemslistBox1.SelectedIndex SelectedItems属性:当列表框

25、允许选择多项时,此属性返回一个集合,该集合包含列表框中选定的所有项。 SelectedIndices属性:当列表框允许选择多项时,此属性返回一个集合,该集合包含列表框中选定所有项的索引。 Text属性:该属性存放列表框中当前选定项的文本,15.2.5 ComboBox控件和ListBox控件,15.2.5 ComboBox控件和ListBox控件,ListBox控件的事件 : SelectedIndexChanged当SelectedIndex属性变化时触发该事件。 ListBox控件的方法 : Add 、Insert 、Clear、 Remove 、SetSelected、 FindStri

26、ng,15.2.5 ComboBox控件和ListBox控件,ComboBox控件的属性 : DropDownStyle属性:设置组合框的样式,取值于DropDownStyle枚举 。 SelectedText属性:设置或获取组合框的文本框内所选定的文本 。 SelectedItem属性:获取组合框内所选定的选项。 MaxDropDownItems属性:设置或获取组合框中下拉部分中显示的最大项数目 。取值介于1和100之间,超过这两个值均会弹出“属性值无效”提示框。,15.2.5 ComboBox控件和ListBox控件,ComboBox控件的事件 : DropDown事件:当显示组合框的下拉

27、部分时触发该事件,也可以认为是单击下拉箭头时发生。 DropDownClosed事件:当组合框的下拉部分不再可见时触发该事件。 ComboBox控件的方法 :Add、Insert、Clear、Remove,15.2.6 DateTimePicker控件,Windows窗体的DateTimePicker 控件使用户可以从日期或时间列表中选择单个项。 控件外观,15.2.6 DateTimePicker控件,DateTimePicker控件的属性 : Format属性:设置显示时间的格式,取值于DateTimePickerForm枚举。 Value属性:显示当前时间 。 ShowCheckBox属

28、性:设置是否在控件中的选定日期旁边显示一个复选框 。 CustomFormat属性:设置或获取自定义的日期时间格式字符串,当Format属性为Custom时,该属性有效。,15.2.7 PictureBox控件,PictureBox控件又称图片框,用于显示图像。在工具箱中,PictureBox控件的图标为 PictureBox控件的属性: Name属性:设置PictureBox控件的名称。 Visible属性:设置PictureBox控件是否可见, Image属性:设置控件显示的图像,是一个对象属性,可在运行时或设计时设置。 ImageLocation属性:设置或获取要在图片框中显示的图像的路

29、径。 SizeMode属性:设置图片在控件中显示的大小或位置。,15.2.7 PictureBox控件,使用PictureBox控件加载图像 在窗体上放置PictureBox控件。 在【属性】窗口中选择Image属性,然后单击省略号按钮以显示【打开】窗口。 如果要查找特定文件类型(如GIF文件),可以在【文件类型】列表框中选择相应的类型. 选择要显示的图片文件。,15.2.8 ProgressBar控件,ProgressBar控件又称为进度条,它负责指示进度,进度完成时,进度条被填满。 ProgressBar控件的属性 : Minimum属性:设置进程指示器的最左端,默认值为0。 Maximu

30、m属性:设置进程指示器的最右端,默认值为100。 Value属性:表示操作过程中已完成的进度。 Step属性:除直接设置Value属性外,还可以通过设置Step属性值来指定Value属性递增的值,以便修改ProgressBar控件显示的值,默认值为10。,15.2.8 ProgressBar控件,ProgressBar控件的方法 PerformStep()方法:按照Step属性中指定的数量增加进度条的值,使进程条按固定值递增,其语法形式如下。 public void PerformStep() Increment ()方法:使显示值按指定的整数进行更改,使进度条按动态值递增,其语法形式如下。

31、public void Increment(int value) 其中,value为动态变化的整数,指示进度条递增的进度。,15.2.9 WebBrowser控件,WebBrowser控件又称为网页浏览器,它为WebBrowser ActiveX控件提供了托管包装。托管包装使用户可以在Windows窗体客户端应用程序中显示网页。 WebBrowser控件的属性如下。 Url属性:更新地址栏获取或设置当前网页的URL。 DocumentTitle属性:设置更新标题栏。 ScrollBarsEnabled属性:设置网页显示框是否显示滚动条 。,15.2.9 WebBrowser控件,WebBrow

32、ser控件的事件如下。 Navigated事件:在WebBrowser控件导航到新文档并开始加载该文档时发生。 DocumentCompleted事件:网页完成加载时触发该事件。 WebBrowser控件的方法 :Navigate 、GoForward 、GoBack、 Refresh、 GoHome 。,15.3 常用容器控件,15.3.1 GroupBox控件 GroupBox控件用于为其他控件提供可识别的分组,又称容器控件 。分组框内的每个控件可以方便地移动,当移动分组框时,其中包含的所有控件也跟着一起移动。 GroupBox控件的主要属性如下。 Text属性:设置容器控件的标题。 Vi

33、sible属性:设置容器控件是否可见。,15.3.2 Panel控件,Panel控件又称为面板控件,该控件类似于GroupBox控件,但Panel 控件没有Text属性,不能像容器控件一样设置标题,但Panel控件可以有滚动条。当用户禁用面板时,该面板上的所有控件都将被禁用。Panel控件也是下面将要介绍的FlowLayoutPanel、TabControl和SplitContainer的基类。 Panel控件的属性 :AutoScroll、 BackColor、 BackgroundImage 、BackgroundImage、Layout、 BorderStyle 。,15.3.3 Flo

34、wLayoutPanel控件,FlowLayoutPanel控件,又称布局面板 。 FlowLayoutPanel控件的主要属性如下。 FlowDirection属性:设置流方向,即布局面板上各控件的排列方向。 WrapContents属性:设置是换行还是剪裁控件的内容。 AutoSize属性:设置是否可以自动调整控件的内容。 FlowBreak属性:取值为true时,控件停止在当前流方向布局控件,并切换到下一行或下一列。,15.3.4 TabControl控件,TabControl控件可以显示出多个选项卡,用于包含图片或按有组织的方式显示其他控件。这些选项卡类似于笔记本中的分隔卡和档案柜文件

35、夹中的标签。 TabControl控件的常用属性: Multiline属性:设置是否可以创建多行选项卡。 Alignment属性:设置在控件的哪一侧排列选项卡,包含Left 和 Right两个取值。 TabPages属性:它是控件中的TabPage对象集合。使用该集合可以添加和删除选项卡对象。,15.3.5 SplitContainer控件,SplitContainer控件可视为一个复合体,由3部分组合而成,分别为两个面板控件以及它们中间一个可移动的拆分条。当光标悬停在该拆分条上时,指针将相应地改变形状以提示该拆分条可移动。,15.3.5 SplitContainer控件,SplitConta

36、iner控件的常用属性如下。 Orientation属性:设置控件拆分的模式。 FixedPanel属性:设置控件的大小。该属性决定调整SplitContainer控件大小后,哪个面板将保持原来的大小。 IsSplitterFixed属性:设置控件的移动情况。该属性决定是否可以通过键盘或鼠标来移动拆分器。 SplitterDistance属性:设置从左边缘或上边缘到可移动拆分条的距离(以像素为单位)。 SplitContainer控件的事件 :SplitterMoving 、SplitterMoved 。,15.4 小结,本章介绍了Visual Studio 2008中常用的基本控件、常用容器

37、控件的相关基础知识,并分别介绍了各控件的相关属性、方法及事件。下章将继续介绍较复杂的一些控件、组件以及菜单、工具栏、状态栏、MDI等。,第16章 Windows Forms高级应用,16.1 高级控件 16.2 用户定义控件 16.3 常用组件 16.4 在窗体中加入菜单 16.5 在窗体中加入工具栏 16.6 在窗体中加入状态栏 16.7 在窗体中加入多窗体 16.8 创建MDI窗体 16.9 小结,16.1 高级控件,16.1.1 TreeView控件 TreeView控件又称树视图,可以为用户显示节点层次结构。 TreeView控件的常用属性如下。 Nodes集合:设置包含在树视图中的顶

38、级节点列表。 Scrollable属性:设置控件是否会显示滚动条。 Showlines属性:设置或获取一个值,确定是否显示连接子节点和父节点的线条。 CheckBoxes属性:设置是否在节点旁边显示带有复选框的树视图。,16.1.1 TreeView控件,TreeView控件的常用方法为:Add()、Remove() 、Clear()。 TreeView控件的常用事件是AfterSelect事件,当用户选定树节点后,触发该事件。,16.1.2 ListView控件,ListView控件又称列表视图,用于显示带图标的项的列表。 ListView控件的常用属性如下: View属性 Items属性

39、Columns属性 Group属性 ListView控件的常用方法如下。 BeginUpdate() 、EndUpdate() 、Clear() ListView控件的常用事件如下。 ItemActivate事件:当激活一个选项时,引发该事件。 AfterLabelEdit事件:当编辑了标签后,引发该事件。 ColumnClick事件:当单击一个列时,引发该事件。,16.1.3 MonthCalendar控件,MonthCalendar控件又称为日历表,它为用户查看和设置日期信息提供了一个直观的图形界面。MonthCalendar控件的一个重要功能是用户可以选择日期的范围。 MonthCale

40、ndar控件的常用属性如下: MaxSelectionCount属性 MinDate属性 MaxDate属性 SelectionRange属性 ShowToday属性 ShowWeekNumbers属性 CalendarDimensions属性 FirstDayOfWeek属性,16.2 用户定义控件,16.2.1 用户定义控件概述 用户控件:这类控件一般用于把控件的用户界面和功能封装在一起,或者把几个其他控件组合在一起,从而改善控件的界面。 定制控件:当没有控件可以满足要求时,就创建这类控件,即从头开始创建控件。它要自己绘出用户界面,在创建控件的过程中没有现有的控件可以使用。,16.2.2

41、用户定义控件的创建、生成及应用,Windows控件开发的一般步骤如下: 创建Windows控件项目。 设计Windows控件界面。 设计Windows控件代码,即为控件添加属性、方法和事件。 生成Windows控件。,16.3 常用组件,16.3.1 BackgroundWorker组件 BackgroundWorker组件又称后台工作区,可以在不同于应用程序的主用户界面线程的另一线程上异步(在后台上)执行耗时的操作。 BackgroundWorker组件的常用属性如下: CancellationPending WorkerReportsProgress WorkerSupportsCance

42、llation IsBusy,16.3.1 BackgroundWorker组件,BackgroundWorker 组件的常用方法如下: RunWorkerAsync()方法 CancelAsync()方法 ReportProgress()方法 BackgroundWorker 组件的常用事件如下: DoWork事件 RunWorkerCompleted事件 ProgressChanged事件,16.3.2 Timer组件,Timer组件又称定时器或计时器,它可以按一定时间间隔周期性自动触发事件。当程序运行时,定时器并不是可以见的。 Timer组件的常用方法包括Start和Stop,这两种方法

43、可用于打开和关闭计时器。计时器在关闭时重置,不存在暂停Timer组件的方法。,16.3.3 ErrorProvider组件,ErrorProvider 组件,通常用于对窗体或控件上的用户输入进行验证。 ErrorProvider组件的常用属性如下: Icon属性:设置为自定义错误图标而不是默认图标,默认图标为。 DataSource属性:设置为数据集显示错误信息。 ErrorProvider 组件的主要方法是SetError()方法。该方法可以指定错误信息字符串和错误图标应出现的位置。 示例: errorProvider1.SetError(textBox1, 长度超过了);,16.4 在窗体

44、中加入菜单,16.4.1 创建基本菜单 位于窗体标题栏下的菜单称为主菜单,它由MenuStrip控件生成。该控件使用Items包含各个菜单项。菜单项或子菜单项均由ToolStripMenuItem控件生成。双击各菜单项,生成单击事件,填写事件代码即可。,16.4.1 创建基本菜单,步骤: 把MenuStrip控件从工具箱中拖动到窗体上,就会出现菜单编辑器 。 在菜单编辑器内,单击【请在此处输入】文本框,并输入在菜单中显示的文本,按【Enter】键后,菜单编辑器就建立了一个主菜单项。 在菜单文本中输入“ Application.SetCompatibleTextRenderingDefault(

45、false); Application.Run(new Form1(); ,16.7.1 多窗体概述,对于窗体的生成与关闭,操作分别如下。 建立窗体实例:在C#中,窗体实际就是一个类。若要操作某一个窗体,必须先实例化一个窗体类,代码如下。 Form1 f = new Form1(); 显示窗体:使用Form类的Show()方法或ShowDialog()方法可以显示窗体,代码如下。 f.Show(); 隐藏窗体:使用Form类的Hide()方法可以隐藏窗体,代码如下。 f.Hide(); 关闭窗体:使用Form类的Close()方法可以关闭窗体,代码如下。 f.Close();,16.7.2 窗

46、体间的关联,从主窗体中启动其他窗体,可以在主窗体中生成其他窗体的实例,或引用其他窗体,然后通过该实例的Show()方法显示窗体。 示例: Form2 f = new Form2(); mainForm.Hide();/mianForm为主窗体的名称 f.Show(); 从其他窗体访问主窗体 可以在其他窗体类中声明一个引用主窗体实例的公有变量。在主窗体启动其他窗体时,把主窗体实例传给该变量即可。这样,在其他窗体中,就可以利用该变量访问主窗体了。,16.7.2 窗体间的关联,从其他窗体访问主窗体 ,示例: 例如,主窗体中包含1个TextBox控件和Button控件,窗体2包含1个TextBox控件

47、。当单击主窗体的Button控件时,将弹出窗体2,且该窗体TextBox控件的值为主窗体TextBox控件的值。 主窗体代码如下。 private void button1_Click(object sender, EventArgs e) Form2 f = new Form2(); f.form1 = this; f.Show(); 其他窗体代码如下。 public partial class Form2 : Form public Form1 form1; public Form2() InitializeComponent(); private void Form2_Load(obje

48、ct sender, EventArgs e) textBox1.Text = form1.ControlstextBox1.Text; ,16.7.2 窗体间的关联,从主窗体中访问其他窗体 若要在主窗体中访问其他窗体,需要在主窗体中为其他窗体生成公有属性或公有变量。当其他窗体关闭时,就可以把这些变量或属性的值返回给主窗体。,16.7.3 创建多窗体,见书例16-11。,16.8 创建MDI窗体,MDI应用程序允许用户同时显示多个文档,每个文档显示在它自己的窗体中。MDI窗体包括一个父窗体和若干个子窗体。MDI父窗体是包含MDI子窗体的容器,MDI子窗体是用户与MDI应用程序交互的窗体。要创建

49、一个MDI窗体,必须先创建几个窗体,然后将其中一个窗体设置为主窗体,其余窗体均为子窗体。,16.8 创建MDI窗体,创建主窗体的步骤如下: 新建一个Windows Forms项目。 设置MDI主窗体的属性。 打开【属性】窗口,要将该窗体设为主窗体,只需将该窗体的IsMdiContainer属性设置为True 。 最后由用户自行设计主窗体。,16.9 小结,Windows Form项目大多是由窗体和控件所组成的。因此,使用窗体和控件进行Windows Form项目开发是每个开发人员必须掌握的内容。本章介绍了Windows高级控件、菜单、工具栏、状态栏、多窗体以及MDI窗体的使用方法。,第17章

50、熟练使用通用窗口,窗口是Windows程序设计中的另一项重要内容,它是应用程序与用户进行交互的一个重要途径,常用于实现应用程序的输入、输出功能。在C#中没有提供为窗口专门设计的类。 在Visual Studio 2008中,可以通过使用Windows窗体设计器来构造自定义窗口,根据具体需要,可以向窗口中添加诸如Label、Textbox和Button之类的控件。.NET Framework还包含预定义窗口,也称为通用窗口,用户可以自行修改以适应应用程序的需要。本章将主要介绍C#中通用窗口的相关知识。,章节内容,17.1 自定义窗口 17.2 文件窗口 17.3 文件夹浏览窗口 17.4 打印

51、17.5 打印预览窗口 17.6 【字体】窗口和【颜色】窗口 17.7 MessageBox类 17.8 小结,17.1 自定义窗口,自定义窗口即由用户根据应用程序的需求自行设计的窗口。通常根据工作模式的不同,自定义窗口分有模式窗口和无模式窗口两种。有模式窗口要求用户在继续运行程序前先响应窗口;无模式窗口不要求用户在继续运行程序前先响应窗口,而是停留在屏幕上随时可用。 调用窗体的ShowDialog()方法显示有模式窗口。 调用窗体的Show()方法显示无模式窗口。,17.2 文件窗口,文件窗口包括文件打开窗口和文件保存窗口。 文件打开窗口由OpenFileDialog类实现,用于浏览本地和网

52、络中任意计算机上的文件夹,并可选择打开一个或多个文件; 文件保存窗口由SaveFileDialog类实现,用于浏览文件系统并选择要保存文件的位置。,17.2 文件窗口,using System.IO; private void button1_Click(object sender, EventArgs e) SaveFileDialog sfdlg = new SaveFileDialog(); sfdlg.Filter = 所有文件*.*|*.*|文本文件*.txt|*.txt|C#文件|*.cs|C文件|*.c; sfdlg.InitialDirectory = c:user; sfdl

53、g.Title = 保存文本文件; sfdlg.FilterIndex = 2; /如果用户单击文件保存窗口的【保存】按钮,向文件写 if (sfdlg.ShowDialog() = DialogResult.OK) FileStream fs = new FileStream(sfdlg.FileName, FileMode.OpenOrCreate, FileAccess.Write); StreamWriter fileStream = new StreamWriter(fs); fileStream.WriteLine(textBox1.Text); fileStream.Close(

54、); ,17.3 文件夹浏览窗口,在进行文件操作时,除了使用文件窗口获得文件路径外,还经常需要获得文件夹的路径,这就需要使用文件夹浏览窗口。在程序中,使用FolderBrowserDialog类的ShowDialog方法显示文件夹浏览窗口。,17.4 打印,private void Form1_Load(object sender, EventArgs e) pdoc.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(pdoc_PrintPage); pd.Document = pdoc;/设置Document属性为需

55、要打印的文档 void pdoc_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) e.Graphics.FillRectangle(Brushes.Red, new Rectangle(400, 400, 400, 400); private void button1_Click(object sender, EventArgs e) /打印文档 if (pd.ShowDialog() = DialogResult.OK) pd.Document.Print(); private void butto

56、n2_Click(object sender, EventArgs e) Application .Exit (); ,17.5 打印预览窗口,在C#中,可以通过两种方式进行打印预览,即使用PrintPreviewControl控件和PrintPreviewDialog组件。 PrintPreviewDialog组件又称打印预览窗口,用于显示文档打印后的外观,该窗口包含打印、放大、显示一页或多页等命令按钮.,17.5 打印预览窗口,using System.Drawing.Printing; private void Form1_Load(object sender, EventArgs e)

57、 PrintDocument myDocument = new PrintDocument(); myDocument.PrintPage += new PrintPageEventHandler(docToPrint_PrintPage); private void button1_Click(object sender, EventArgs e) printPreviewDialog1.Document = myDocument;/将打印预览的打印文档设置为打印文档 printPreviewDialog1.ShowDialog();/显示打印预览窗口 void myDocument _Pr

58、intPage(object sender, PrintPageEventArgs e) e.Graphics.FillRectangle(Brushes.Red, new Rectangle(150, 300, 500, 500); ,17.5 打印预览窗口,打印预览控件(PrintPreviewControl)用于按文档打印时的外观显示文档。此控件没有命令按钮和其他用户界面元素,因此通常只有在自定义打印预览用户界面时才使用它。如果需要标准的用户界面,可以使用 PrintPreviewDialog控件.,17.5 打印预览窗口,private void Form1_Load(object s

59、ender, EventArgs e) PrintDocument docToPrint = new PrintDocument(); printPreviewControl1.Document = docToPrint; docToPrint.PrintPage += new PrintPageEventHandler(docToPrint_PrintPage); void docToPrint_PrintPage(object sender, PrintPageEventArgs e) string text = 这是打印预览控件的演示!; Font printFont = new Font(宋体,40, FontStyle.Regular); e.Graphics.DrawString(text, printFont, Brushes.Red, 100, 100); e.Graphics.FillRectangle(Brushes.Red, new Rectangle(150, 300, 500, 500); ,17

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论