




已阅读5页,还剩79页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,第14章 图形用户界面观念: 第一部分,天津理工大学华信软件学院 张一鸣 2010年7月18日,C#语言程序设计,2,本章主要内容,图形用户界面(GUI)设计原则 Windows应用程序开发步骤 GUI界面中的事件处理 窗体及其常用属性和布局 Windows常用控件 卷标、按钮、单选/复选框、面板、数字上下控件 如何在GUI控件中增加工具提示 如何处理鼠标和键盘事件,3,14.1 图形用户界面(GUI),图形用户界面(GUI)使用户可以直观地和程序交流,使程序得到直观的外观展示,对不同的程序提供一致的直观用户界面组件,使用户能够更快地适应每个程序。它已经是现代程序设计的绝对主流。 GUI在Windows窗体上创建,并利用系统提供和用户自己开发的功能性控件按照一定的摆放布局排放,让用户通过鼠标、键盘和其他输入形式(如声音命令)与程序交互。,4,控件与容器 目前国际上软件界面设计的主流是图形用户界面(GUI: Graphics User Interface),它使用户和程序之间可以方便地进行交互。C#对GUI的支持是Control类,它位于System.Windows. Forms命名空间,内含有许多用来设计GUI的组件类,如按钮、菜单、列表、文本框等,同时它还有窗口、对话框等可以摆放各种控件的容器类。 这些类的层次关系如下图:,Component,Button,ComboBox,Checkbox,Label,Scrollbar,ListBox,TextBox,NumUpDown,Container,Window,Frame,Dialog,Panel,5,典型的GUI界面应用程序Word,标题栏,菜单,按钮,滚动条,菜单栏,标题栏,工具栏,标签,6,14.2 Windows应用程序,Windows应用程序是指在微软Windows环境下开发的、具有Windows窗体风格的图形界面的应用软件。目前这些软件是在基于.NET框架的Visual Studio C# 2008平台上开发的。 开发Windows应用程序的最大特点是把程序设计工作分为可视化界面设计和代码编写两个部分。程序员在不同的部分里可以把精力集中在某个方面,充分利用系统提供的资源和自动化机制,提高编程效率。,7,Windows应用程序开发步骤,Windows环境中主流的应用程序都是窗体应用程序,其结构要比控制台式的命令行应用程序复杂。理解它的结构的基础是理解窗体。 在Windows中,窗体是向用户显示信息的可视图形元素,它本身也是一个窗体类的一个实例对象,.NET框架类库的System.Windows.Forms命名控件中定义的Form类是所有窗体的基类。 编写窗体应用程序时,首先选择项目类型为Windows应用程序,再设计窗体的外观和在窗体中添加控件和组件。其后才编写每个控件的执行动作的代码。,8,Windows 应用程序的特点,基本的单元为窗体,它是控件与组件的容器 向用户输出信息 为用户输入信息提供用户界面 一个应用程序可以有多个窗体 窗体代表 WinForms 中的类 每次创建应用程序,都会添加一个窗体 属性、方法和事件分为共享和实例两种类型 共享属性可处理同一类的多个实例 实例属性是分配给类的各个实例的 实例:,Form1.Enabled=True;,9,Forms属性、方法和事件,每个窗体、控件或组件都有属性和相关的若干方法与事件。例如,下表列出了常见的Forms属性、方法和事件。,10,14.3 开发Visual C#应用程序步骤,启动Visual Studio 2008 C#系统 建立Windows应用程序类型的项目 窗体和其中用到的组件的界面设计 每个组件的标识、颜色、位置等的属性设计 每个组件和窗体实现的可执行功能的方法本身的代码设计,11,实例14.1 设计一个小型加法器,编写一个实现两个整数相加并显示结果的小型加法器程序。+ = 设计步骤: 用Windows窗口设计器设计窗体 工具箱 添加Button、Label、TextBox .等控件 为每个控件设置有关的属性 为控件的相关方法添加处理语句 保存及编译链接程序 运行程序,12,(1)建立项目,在Visual Studio C# 2008启动后选择C#,从其菜单条中选菜单“文件”,在其下拉菜单中选择“新建”,然后选择“项目”。 在“项目类型”列表框中选择“Visual C#”下的“Windows”。在“模板”列表框里选择“Windows应用程序”。 在下部的“名称”和“位置”文本框里填写项目文件的名字和确定该项目文件的保存位置。,13,14,15,(2) Winforms 应用程序的界面设计,在Visual Studio C# 2008的主界面,系统提供了一个默认的窗体。 通过调用工具箱,从中选取各种有用的控件添加到窗体来设计Windows应用程序的界面。即:用鼠标点到工具箱里需要添加的控件,按住后拖动鼠标到窗体中需要摆放该控件的位置,然后松开鼠标即可。 计划向窗体中添加的控件有2个标签(Label)、1个按钮(button)和3个文本框(TextBox),形成一个窗体名为“TestForm”的简单加法器窗体(参见下图)。,16,17,18,(3) 为控件设置属性,为窗体选中各种控件后,要为控件设置有关名称、尺寸、颜色各种属性。本程序涉及到的各种控件和要设置的内容参见下表:,19,(4) 编写程序代码,双击button1,进入代码编辑器。为按钮控件编写代码如下: private void button1_Click ( object sender, EventArgs e) if (textBox1.Text = string.Empty |textBox2.Text =string.Empty) MessageBox.Show ( “输入数据不完整!” ); return; int a = int.Parse ( textBox1.Text ); int b = int.Parse ( textBox2.Text ); int c = a + b; textBox3.Text = c.ToString ( ); ,20,21,(5) 生成解决方案和 程序运行与调试,从Visual Studio 2008 C#系统的菜单条中的“生成”菜单,选择“生成解决方案”并单击,或者按快捷键Ctrl+Shift+B(或者更简单只按功能键F6)都能够生成本程序的可执行代码,即:studentMIS.exe文件。 从Visual Studio 2008 C#系统的菜单条中的“调试”菜单,选择“开始执行(不调试)”并单击,或者按Ctrl+F5快捷键都能够运行本程序。,22,23,24,14.4 GUI的事件处理,在Windows应用程序中,用户与程序的交互表示程序需要执行的任务。例如,在电子邮件程序中,用户编写完电子邮件时,单击Send按钮通知程序把电子邮件发送到指定的电子邮件接收人的地址。或者,在文字处理程序中,用户根据需要单击保存按钮把正在编辑的文件保存到指定的存储位置上。这就是说,GUI是事件驱动的,用户与GUI组件交互时,这个交互(称为事件)驱动程序执行一个任务。发生事件时执行任务的方法称为事件处理器,响应事件的整个过程称为事件处理。,25,组件的事件处理器,我们知道,C#的组件之间是通过消息传递信息的。每个控件对接收到的消息根据需要或者置之不理,或者设置专门的事件处理方法处理之。我们称某个事件的处理方法为某事件处理器。当要为某个事件添加事件处理器时,只要在窗口中的这个组件上双击鼠标,C#开发平台就自动为该事件处理器体的创建了代码框架,然后用户可以在其中添加需要的代码。 例如,对在窗体中添加的按钮,当用户单击这个按钮时,想让程序显示一个提示性的消息框,则要对按钮的单击事件创建一个事件处理器,仅需要双击窗口中的按钮,在程序代码中就自动声明了下面的事件处理器: private void clickButton_Click ( object sender, EventArgs e ) / end method clickButton_Click 这时用户就可以在方法体中编写自己的处理代码了。,26,事件处理器的说明,习惯上,C#事件处理器方法名为controlName_eventName (如clickButton_Click)。它在用户单击clickButton控件时执行。 每个事件处理器都接收2个参数:第一个是object引用sender, 引用产生事件的对象。第二个是EventArgs类型或其派生类事件变元对象的引用,通常是e。E包含了所发生事件的其他信息, EventArgs是表示事件信息的所有类的基类。 事件处理器不返回值,它执行完代码后把控制交给主程序。 要在响应事件时显示消息框,可在事件处理器中插入下列语句:MessageBox.Show ( “Button was clicked.” );,27,代理与事件处理机制,在C#中,显示一个窗口、单击按钮或者下拉菜单等操作称为一个事件。产生事件的控件称为事件源(或者事件发送者),而处理事件的方法称为事件接收者(或事件处理者),它响应事件源产生的特定事件。这两者不能由一个方法同时完成。当发生事件时,事件发送者调用事件接收者执行一个任务(即“处理事件”)。 .NET事件处理机制可以选择自己的事件处理方法名。但是按钮之类的事件发送者事先不知道那个方法将响应其事件。因此,需要有一个机制表示那个方法是事件的接收者。,28,事件的处理过程如下图:,事件源方法 发生XXX事件,事件源消息,事件处理方法( sender, e ) ,返回 无结 果值,29,代理与事件处理机制(续),事件处理器通过代理(delegate)的特殊对象连接控件事件。代理保存一个方法的引用,方法的签名由代理类型的声明指定,可以响应产生的每个事件。例如,按钮单击事件的代理代理类型为名字空间System下的EventHandler。其声明如下: public delegate void EventHandler ( object sender, EventArgs e ); 它用关键字delegate声明代理类型EventHandler,引用的方法返回void和接收2个参数,第一个是object类型(事件的发送者), 引用产生事件的对象。第二个是EventArgs类型。如果比较代理声明和clickButton_Click首部,则可以看到这个事件处理器符合EventHandler代理的要求。,30,简单事件驱动GUI,上例中,程序窗体中设置了一个按钮(计算),当用户单击该按钮时,就发送了一个需要执行计算的消息给处理这个事件的方法button1_Click ( ),接到这个消息时,该方法就会执行预先编好的处理语句: if (textBox1.Text = string.Empty |textBox2.Text =string.Empty) MessageBox.Show ( “输入信息不完整!” ); return; int a = int.Parse ( textBox1.Text ); int b = int.Parse ( textBox2.Text ); int c = a + b; textBox3.Text = c.ToString ( ); 这种对出现的事件由专门的方法进行处理的模式就是GUI的事件处理机制。,31,实例14.2 事件处理 (续),利用本书前面介绍的技术,创建一个窗体,其中包含(添加)一个按钮。在按钮的属性窗口中,将Name属性设置为clickButton,Text属性设置为ClickMe。再对按钮的单击事件创建一个事件处理器,这只要双击窗口中的按钮控件即可,系统会在程序代码中声明下列事件处理器: private void clickButton_Click (object sender, EentArgs e) 要在响应事件时显示消息框,则要在事件处理器中插入下列语句: MessageBox.Show ( “Button was clicked.” );,32,GUI的事件处理实例 14.2,using System; using System.Windows.Forms; namespace SimpleEventExample public partial class SimpleEventExampleForm: Form public SimpleEventExampleForm ( ) InitializeComponent ( ); private void clickButton_Click(object sender, EentArgs e) MessageBox.Show ( “Button was clicked.” ); ,33,MessageBox消息框,MessageBox 是一个预定义对话框,它将与应用程序相关的信息以图形的对话框样式显示给用户 调用 MessageBox 类的 Show 方法显示消息框 public static DialogResult Show (string, string, MessageBoxButtons, MessageBoxIcon); 例如,MessageBox.Show ( “计算完成”, “计算器程序“, MessageBoxButtons. OKCancel, MessageBoxIcon.Asterisk );,34,代码说明,35,14.5 窗体及其常用属性,窗体是对象,是类的实例。用Windows窗体设计器创建的窗体是类,是用来创建窗体的模板。 Windows窗体常用的属性有: Visible属性,决定了窗体的可见性。把Visible属性设置为假则Windows窗体应用程序不可见。 TopMost属性,当一个Windows应用程序有多个窗体时,经常会有多个窗体互相叠加在一起的情况,为了使自己所需要的窗体是在所有窗体的最顶端,则要在属性窗口中把TopMost属性设置为true。 FormBorderStyle属性, Windows窗体的外观有几种边框式样可供选择。参见教材第138页的表5.2. Location属性,可以指定Windows窗体在计算机屏幕上的显示位置。它以像素为单位指定窗体左上角的位置。,36,Location (int x, int y, int width, int height) 方法参数的含义:,X个像素,y个 像素,width个像素,Height 个像素,37,窗体属性、方法和事件,38,控件概念,控件是包含在窗体对象内的可视化图形对象。大多数控件属性都派生于System.Windows. Forms.Control类 控件能对用户或应用程序的某些行为作出响应,这些行为称为事件 每种类型的控件都具有其自己的属性集、方法和事件,以使该控件适合于特定用途 可通过在设计器中操作控件并编写代码来在运行时动态添加控件,39,14.6 标签、文本框、按钮控件简介,Label 控件用于显示用户不能编辑的文本或图像 TextBox:Windows 窗体文本框用于获取用户输入或显示文本 Button 控件允许用户通过单击来执行操作 Button 控件既可以显示文本,又可以显示图像 LinkLabel 控件和Label 控件有许多共同之处,凡是使用Label地方,都可以使用LinkLabel 控件。此外,它还可以向Windows窗体应用程序添加Web式样的链接。,40,标签、按钮控件的常见属性,41,文本框常见属性(续),42,文本框,文本框用于获取用户输入的文本或显示文本。用TextBox控件可以编辑单行或多行的文本,但是输入或显示的文本是单一格式化的。若要显示多种类型的带格式文本,则可以使用RichTextBox控件。 TextBox控件显示的文本包含在Text属性。默认情况下,一个文本框最多可以输入2048个字符。如果多行属性MultiLine为真,则最多可以输入32KB文本。 TextBox控件可以设置为只读属性。这时显示的内容不可以被修改。 TextBox控件常用的事件是TextChanged。当文本框的内容发生变化时触发这个事件。,43,文本框的应用(1),控制TextBox控件中字符的插入点,当TextBox控件刚得到焦点时,文本框内的默认插入位置是在所有现有文本的最左边,用户可以用键盘或鼠标移动插入点。若文本框失去焦点而后又再次获得焦点,则插入点为用户上次放置的位置。 把SelectionStart属性设置为0,则插入点被放到第一个字符的左边。如下面所示: private void textBox1_Enter (Object sender, System.EventArgs e ) textBox1.SelectionStart = 0; textBox1.SelectionLength = 0; 若把SelectionStart属性设置为现有文本串长,则插入点被放到最后一个字符的右边。,44,文本框的应用(2),创建密码文本框,密码框在用户输入字符串时显示占位符,而不显示用户实际输入的文字串,增强保密性。把TextBox控件的PasswordChar属性设置为某个特定字符(一般以“*”居多)就可以实现这个目的。例如,如果希望在密码框中显示星号,则在属性窗口将PasswordChar属性设置为“*”。运行时,无论用户在文本框中输入什么字符,都显示为星号。 设置MaxLength属性指定可在文本框中输入多少个字符。如果超过了最大长度,系统会发出声响提示用户,且文本框不再接受任何字符。,45,文本框的应用(3),以编程方式选择文本 TextBox控件中可以用编程方式选择文本。例如,如果要编写一个能自动找到在一个文本中搜索特定字符串的方法,就可以在该方法找到特定字符串时把找到的字符串的位置以醒目的方式告诉用户。 把SelectionStart属性设置为要选择的文本的开始位置,如0;SelectionLength属性设置为要查找的文本的长度,则会选择该数目的字符;再通过SelectionText属性设置要查找的文本,就可以执行这个操作了。 参见下面的代码: private void textBox1_Enter(Object sender, System.EventArgs e) textBox1.SelectionStart = 0; textBox1.SelectionLength = textBox1.Text.Length; ,46,按钮,Windows窗体的Button控件允许用户的单击操作。每当用户单击按钮时,即调用Click事件处理器。 Click事件的代码执行所需要的操作。 按钮上显示的文本包含在Text属性中。文本的外观受Font属性(字体和尺寸)与TextAlign属性控制。按钮还可以用Image和ImageList属性显示图像。 在任何Windows窗体上都可以指定某个按钮为默认的“接受”按钮。也就是说,每当用户按Enter键时,即单击“默认”按钮。在设计器中指定“接受”按钮的方法是:选择按钮所在的窗体,在其“属性”窗口中将窗体的AcceptButton属性设置为想作为默认的接受按钮的Button控件的名称。当然,也可以用编程的方式指定“接受”按钮。例如: private void SetDefault ( Button myDefaultBtn ) this.AcceptButton = myDefaultBtn; ,47,按钮(续),在任何Windows窗体上都可以指定某个按钮为默认的“取消”按钮。也就是说,每当用户按Esc键时,即单击“取消”按钮。在设计器中指定“取消”按钮的方法是:选择按钮所在的窗体,在其“属性”窗口中将窗体的CancelButton属性设置为想作为默认的取消按钮的Button控件的名称。当然,也可以用编程的方式指定“接受”按钮。例如: private void SetCancelButton ( Button myCancelBtn ) this. CancelButton = myCancelBtn; Button控件最常用的事件是Click,此外还有MouseEnter、MouseDown和MouseUp事件等。 Button控件没有双击事件,如果用户双击了Button控件,将分别以两次单击事件各自单独处理。,48,14.7 组框与面板,组框与面板都属于容器,在GUI中布置控件,一般用于组合几个功能相似的控件或相关的控件。当移动组框与面板时,其中的所有控件也一起移动。 组框与面板的主要差别在于组框可以显示标题(文本)而没有滚动条,面板没有标题但是可以有滚动条。再有,组框的边框默认比较细,而面板可以通过BorderStyle属性改变边框。,49,组框与面板的属性,50,创建组框与面板的操作步骤,创建组框:将其从工具箱拖到窗体上,然后将新控件从工具箱拖到组框中。这些控件加进组框的Controls属性,称为组框的一部分。组框的Text属性指定标题。 创建面板:将其从工具箱拖到窗体上,然后将新控件从工具箱拖到面板中。要启用滚动条,将面板AutoScroll属性设置为true。如果面板缩放后无法显示所有控件,则会出项滚动条可以用滚动条浏览面板中的所有控件。将面板BorderStyle属性设置为FixedSingle,以便在窗体中看到面板。,51,组件与控件的布局,按要求,我们在窗体GroupBox and Panel Example中从上至下依次设计了组框(main Group Box)和面板(main Panel)两个容器。它们各自包含2个按钮。 组框的hiButton按钮显示文本“Hi”, byeButton按钮显示文本“Bye”。 面板的leftButton按钮显示文本“Far left”, rightButton按钮显示文本“Far right”。面板的AutoScroll属性设置为 true,使面板内容需要更多空间时可以显示滚动条。卷标(messageLabel)最初为空,VC会调用每个控件的Controls属性的Add方法把控件加进组框或面板。,52,例子14.3 组框与面板的编程,using System; using System.Windons.Forms; namespace GroupBoxPanelExample public partial class GroupBoxPanelExampleForm:Form public GroupBoxPanelExampleForm() InitializeComponent(); private void hiButton_Click( object sender, EventArgs e) messageLabel.Text = “Hi pressed”; private void byeButton_Click( object sender, EventArgs e) messageLabel.Text = “Bye pressed”; private void leftButton_Click( object sender, EventArgs e) messageLabel.Text = “Far left pressed”; private void rightButton_Click( object sender, EventArgs e) messageLabel.Text = “Far right pressed”; ,53,14.8 复选框与单选钮,C#中有两种状态按钮,即复选框(CheckBox)与单选钮(RadioButton)可以设置开/关或真/假值。 与Button类一样, CheckBox与RadioButton类也是从ButtonBase类派生的。 复选框是个矩形小框,用户可以在没选和选中状态之间多次选择,被选中后在复选框中有一个复选标记。 单选钮与复选框相似也有选择和不选两种状态。但是单选钮通常成组出现,一次只能选择组中一个单选钮,此时组内的其他单选钮自动不选。因此,单选钮是一组互斥选项。,54,复选框CheckBox,CheckBox 控件指示某特定条件是打开的还是关闭的,或是选中和没有选 多个复选框可以使用 GroupBox 控件进行分组 Text指定复选框右边显示的文字信息 Appearance表示复选框的显示方式,Normal表示标准复选框显示方式,Button表示以按钮方式显示复选框 CheckBox 控件有两个重要属性 Checked 和 CheckState Checked 属性表示复选框是否被选,返回 true 或 false CheckState 属性表示复选框在三种选择状态之一的值,返回 CheckState.Checked 、CheckState.Unchecked或CheckState.Indeterminate,55,复选框的应用,利用复选框技术开发一个小程序,让用户通过复选框改变卷标的式样。一个复选框的事件处理器采用粗体,另一个复选框的事件处理器采用斜体。如果同时选择这两个复选框,则字体变为粗斜体。程序在开始时,两个复选框都不选择。,56,复选框应用的例子14.4,using System; using System.Drawing; using System.Windows.Forms; public partial class CheckBoxTestForm:Form public CheckBoxTestForm() InitializeComponent(); private void boldCheckBox_CheckedChanged (object sender, EventArgs e) OutputLabel.Font = new Font ( OutputLabel.Font, OutputLabel.Font.Style FontStyle.Bold ); private void italicCheckBox_CheckedChanged (object sender, EventArgs e) OutputLabel.Font = new Font ( OutputLabel.Font, OutputLabel.Font.Style FontStyle.Italic ); ,57,RadioButton控件,RadioButton 控件为用户提供由两个或多个互斥选项组成的选项集,以便从中选一。 当单击 RadioButton 控件时,其 Checked 属性设置为 true,并且调用 Click 事件处理程序 用 Text 属性设置控件内显示的文本,该属性可以包含访问键快捷方式 如果将 Appearance 属性设置为 Appearance. Button,则 RadioButton 控件的外观可以像命令按钮一样,58,单选钮的应用,利用单选钮技术开发一个小程序,让用户通过单选钮选择一个消息框的选项。选项包括选择消息框里的按钮个数和类型。选择所要属性后,用户按Display按钮显示消息框。 在本程序中增加一个消息框中显示的图标的单选钮,可以更好地配合提示信息显示相应的图标,增加视觉感染力。,59,MessageBoxButton枚举,指定若干常数,用以定义 MessageBox 上将显示哪些按钮,60,MessageBoxIcon枚举,指定定义哪些信息要显示的常数,61,MessageBoxIcon枚举(续),62,单选钮应用的例子14.5,using System; using System.Windows.Forms; public partial class RadioButtonsTestForm:Form private MessageBoxButtons buttonType; private MessageBoxIcon IconType; public RadioButtonsTestForm ( ) InitializeComponent ( ); private void buttonType_CheckedChanged (object sender, EventArgs e) if ( sender = okRadioButtons ) buttonType = MessageBoxButtons.OK; else if ( sender = okCancelRadioButtons ) buttonType = MessageBoxButtons.OKCancel; else if ( sender = abortRetryIgnoreRadioButtons ) buttonType = MessageBoxButtons.AbortRetryIgnore; else if ( sender = yesNoCancelRadioButtons ) buttonType = MessageBoxButtons.YesNoCancel; else if ( sender = yesNoRadioButtons ) buttonType = MessageBoxButtons.YesNo; else buttonType = MessageBoxButtons.RetryCancel; ,63,例子14.5(续1),private void IconType_CheckedChanged (object sender, EventArgs e) if ( sender = asteriskRadioButtons ) IconType = MessageBoxIcon.Asterisk; else if ( sender = errorRadioButtons ) IconType = MessageBoxIcon.Error; else if ( sender = exclamationRadioButtons ) IconType = MessageBoxIcon.Exclamation; else if ( sender = handRadioButtons ) IconType = MessageBoxIcon.Hand; else if ( sender = informationRadioButtons ) IconType = MessageBoxIcon.Information; else if ( sender = questionRadioButtons ) IconType = MessageBoxIcon.Question; else if ( sender = stopRadioButtons ) IconType = MessageBoxIcon.Stop; else IconType = MessageBoxIcon.Warning; ,64,例子14.5(续2),private void displaybutton_Click (object sender, EventArgs e) DialogResult result = MessageBox (“This is your Custom MessageBox”, “Custom MessageBox”, buttonType, iconType, 0, 0 ); switch ( result ) case DialogResult.OK: displayLabel.Text = “OK was pressed.”; break; case DialogResult.Cancel: displayLabel.Text = “Cancel was pressed.”; break; case DialogResult.Abort: displayLabel.Text = “Abort was pressed.”; break; case DialogResult.Retry: displayLabel.Text = “Retry was pressed.”; break; case DialogResult.Ignore: displayLabel.Text = “Ignore was pressed.”; break; case DialogResult.Yes: displayLabel.Text = “Yes was pressed.”; break; case DialogResult.No: displayLabel.Text = “No was pressed.”; break; ,65,14.9 数字上下控件,有时要把用户的输入限制在特定范围的数字值,这时可以使用数字上下控件(numericUpDown)。它像个文本框,右边有两个垂直排列的小按钮,一个向上箭头,一个向下箭头。用户可以在其中输入数字值,就像在文本框中一样,也可以单击向上或向下箭头,分别将控件中的值递增或递减。最大和最小值分别用Maximum和Minimum属性指定(Decimal类型),Increment属性(也是Decimal类型)指定用户单击向上或向下箭头时的增量。DecimalPlaces指定控件中显示的位数。当改变控件值时发生ValueChanged事件。,66,NumericUpDown 控件,NumericUpDown控件显示并设置选择列表中的单个数值 该控件的主要属性为 Value、Maximum(默认值为 100)、Minimum(默认值为 0)和 Increment(默认值为 1) Value 属性设置该控件中选定的当前数字 Increment 属性设置用户单击向上或向下按钮时值的调整量 当焦点移出该控件时,将根据最小值和最大值验证键入的输入 该控件的主要方法是 UpButton 和 DownButton,67,例子14.6 数字上下控件的应用,本例要求用户在两个文本框分别输入存入的本金数和利息率,再利用数字上下控件接受输入要计算利息的年数,然后用户单击计算按钮就能根据公式计算出经过指定年数可以得到的利息数并在窗体下部的文本框中显示出来。 对数字上下控件yearUpDown,将Minimum设置为1,将Maximum设置为10,Increment保持为默认值1。这些设置指定用户输入110的年数,增量为1。把数字上下控件的ReadOnly设置为true,表示用户不能在控件中输入数字进行选择,而只能单击向上或向下箭头修改控件值。,68,数字上下控件应用的例子14.6,using System; using System.Windows.Forms; public partial class interestCalculatorForm:Form public interestCalculatorForm ( ) InitializeComponent ( ); private void CalculateButton_Click (object sender, EventArgs e) decimal principal,amount; double rate; int year; string output; principal = Concert.ToDecimal ( principalTextBox.Text ); rate = Concert.ToDouble ( interestTextBox.Text ); year = Convert.ToInt32 ( yearUpDown.Value ); output = “YeartAmount on Depositrn”, for ( int yearCounter = 1; yearCounter = year; yearCounter+ ) amount = principal * (decimal) Math.Pow ( 1 + rate/100 ), yearCounter ( ); output += ( yearCounter + “t” + string.Format (“0:C”, amount ) + “rn” ); ,69,例子14.6的运行结果,70,71,72,14.10 鼠标事件处理,当用户在窗体内的控件上单击、移动鼠标时,会发生鼠标事件。可以对System.Windows.Forms.Control类派生的任何控件处理鼠标事件。对大多数鼠标事件,信息通过MouseEventArgs类对象传入事件处理方法,用于创建事件处理器的代理是MouseEventHandler。这些事件的处理方法要求Object和MouseEventArgs对象变元。 MouseEventArgs类包含与鼠标事件相关的信息,如鼠标指针的x与y坐标,按下的鼠标按钮和鼠标单击的次数等。常见的鼠标事件与事件变元见下表。,73,鼠标事件与事件变元表,74,鼠标应用的实例 14.7,本例用鼠标事件在窗体上画图。用户拖动鼠标时(即按住鼠标键并移动鼠标),拖动操作期间在发生每个鼠标事件的位置上显示一个小圆,连续的移动鼠标会产生连续相邻接的多个小圆,形成各种线条。,75,鼠标事件处理应用的例子14.7,using System; using System.Drawing; using System.Windows.Forms; public partial class PainterForm:Form bool shouldPaint = false; public PainterForm ( ) InitializeComponent ( ); private void PainterForm_MouseDown (object sender, MouseEventArgs e) shouldPaint = true; private void PainterForm_MouseUp (object sender, MouseEventArgs e) shouldPaint = false; private void PainterForm_MouseMove (object sender, MouseEventArgs e) if ( shouldPaint ) Graphics graphics = CreateGraphics ( ); graphics.FillEllipse ( new SolidBrush ( Color.BlueViolet ), e.X, e.Y, 4, 4 ); graphics.Dispose ( ); ,76,14.11 键盘
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025内蒙古锡林郭勒盟锡林浩特市招募公益性岗位139人模拟试卷含答案详解
- b二从业资格证考试试题及答案解析
- 2025湖北咸宁市嘉鱼县鱼岳镇招聘社区工作者38人考前自测高频考点模拟试题附答案详解(完整版)
- 2025湖南岳阳市平江县中医医院公开招聘急诊科护士考前自测高频考点模拟试题及答案详解(历年真题)
- 2025贵州省临床检验中心第十三届贵州人才博览会引才考前自测高频考点模拟试题及答案详解(各地真题)
- 北票市勘察设计注册土木工程师考试(岩土专业知识)模拟试题及答案(2025年)
- 勘察设计注册岩土工程师考试(公共基础)全真题库及答案(2025年甘肃陇南市)
- 2025年勘察设计注册土木工程师考试(岩土专业基础)强化练习题及答案一
- 2025年勘察设计土木工程师考试(岩土专业知识)每日一练试题及答案
- 2025湖南湘西泸溪县妇幼保健计划生育服务中心招聘高校见习生4人模拟试卷及答案详解(历年真题)
- 2024年南昌市公安局东湖分局招聘警务辅助人员考试真题
- 【《企业人才招聘存在的问题与对策》5200字(论文)】
- 我国养老状况课件
- 心脏支架术后康复课件
- 国庆期间保安安全培训课件
- 监控设备迁移合同协议书
- 新学期-启航出发-2025-2026学年初一上学期新生开学第一课主题班会
- 压延机故障应急处理方案
- 2025年低碳节能减排知识竞赛题库(含答案)
- 业务员保密合同
- 《直线方程的两点式》教学设计
评论
0/150
提交评论