《第三章-GUI程序设计.ppt》由会员分享,可在线阅读,更多相关《第三章-GUI程序设计.ppt(65页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第三章第三章 GUI程序设计程序设计1第三章第三章 GUI程序设计程序设计GUI(Graphics User Interface),即图形用户界面,是指用图形的方式实现人与计算机之间的交互。2目录n3.1 GUI程序设计方法n3.2 窗体n3.3 对话框n3.4 标签、文本框和按钮n3.5 菜单和多文档界面n3.6 工具栏和状态栏n3.7 单选钮、复选钮、组和面板n3.8 列表框、组合框和复选列表框33.1 GUI程序设计方法程序设计方法n3.1.1 GUI程序模型4n3.1.2 建立GUI应用程序的一般步骤 n利用C#编写GUI应用程序的一般步骤:(1)建立“Windows应用程序”项目(2
2、)设计应用程序界面(3)设置窗口和控件的属性(4)编写事件方法代码 3.1 GUI程序设计方法程序设计方法5n3.1.3 控件的基本属性n下面介绍的一些属性是多数控件都具有的属性:(1)Name:用来获取或设置控件的名称。名称是控件的标识。(2)Text:用来获取或设置控件的标题文字。(3)Width和Height:用来获取或设置控件的大小。(4)Left和Top:用来获取或设置控件的位置。(5)Visible:用来获取或设置控件是否可见。(true或false)。(6)Enabled:用来设置控件是否对响应交互。(true或false)。(7)ForeColor:用来获取或设置控件的前景色。
3、(8)BackColor:用来获取或设置控件的背景色。3.1 GUI程序设计方法程序设计方法6n3.1.3 控件的基本属性(9)Font:用来获取或设置控件的字体。(10)BorderStyle:用来获取或设置控件的边框。(11)AutoSize:用来获取或设置控件是否自动调整大小。(true或false)。(12)Anchor:获取或设置控件的哪些边缘锚定到其容器边缘。(13)Dock:获取或设置控件停靠到父容器的哪一个边缘。(14)TabIndex:用来获取或设置控件的Tab键顺序。(15)TextAlign:用来确定文本对齐方式。(16)Cursor:鼠标移到控件上时,被显示的鼠标指针的
4、类型。3.1 GUI程序设计方法程序设计方法7n【例例3-1】图片的显示和隐藏。n在窗体上放置一个图片框、一个“显示”按钮和一个“隐藏”按钮。n开始运行时,图片不可见,“显示“按钮可用,“隐藏”按钮不可用。n单击“显示”按钮后,图片显示出来,“显示”按钮变成不可用,而“隐藏”按钮变成可用。3.1 GUI程序设计方法程序设计方法8n3.1.4 事件和事件处理n1事件处理模型事件处理模型n在C#中,Windows窗体应用程序中的事件处理是通过委托来实现的。n在.NET框架中,Delegate类用于生成事件处理机制。一个委托由对对象的引用以及对该对象内部一个或多个方法的引用组成的。n在委托事件模型中
5、,“委托”实际上是将事件和处理事件的方法绑定到一起。委托可以将一个事件绑定到单个方法或多个方法;也允许将多个事件绑定到一个方法。3.1 GUI程序设计方法程序设计方法9n事件处理程序是绑定到事件的方法。n当引发事件时,执行事件处理程序内的代码。n每个事件处理程序提供两个使您得以正确处理事件的参数。如:Button 控件的 Click 事件的事件处理程序:private void button1_Clicked(object sender,System.EventArgs e)参数 sender 提供对引发事件的对象的引用。参数e传递针对要处理的事件的对象。通过引用对象的属性(有时引用其方法)可
6、获得一些信息,如鼠标事件中鼠标的位置或拖放事件中传输的数据。3.1 GUI程序设计方法程序设计方法10n2键盘事件键盘事件n当用户对键盘进行操作时,系统会产生相应的键盘事件。n当用户按下某个键时,就会发生KeyDown事件,随后便发生KeyPress事件。n而当用户释放某个键时,发生KeyUp事件。n当用户按住某个键不放时,KeyDown和KeyPress事件会不停地重复触发。3.1 GUI程序设计方法程序设计方法113.1 GUI程序设计方法程序设计方法12n3鼠标事件鼠标事件n鼠标是一种定位输入设备,通常有两个或三个按钮(左、中和右按钮),还可能有滚轮。n它的基本操作方式主要有:单击、双击
7、和滚动。3.1 GUI程序设计方法程序设计方法133.1 GUI程序设计方法程序设计方法14n【例例3-2】利用鼠标和键盘控制图片显示。n窗体上用图片框显示一张图片。n当在图片框上单击鼠标左键时图片放大10%,单击鼠标右键时图片缩小10%。n若转动滚轮,则图片根据前后方向垂直移动,移动步长为12。n鼠标在图片框上移动时,窗体标题显示当前位置坐标,鼠标在图片框上悬停时,显示提示信息“单击左键放大图片,单击右键缩小图片,用光标移动图片”。n鼠标离开图片框时,显示“利用鼠标和键盘控制图片显示”。n按下各方向键时,图片按相应的方向移动;n当按ESC键时,窗体关闭,退出程序;n当按下其他键时,在窗体标题
8、上显示所按的键的名称。3.1 GUI程序设计方法程序设计方法1516n3.2.1 窗体的创建n创建窗体可以有两种方法:n手动创建,即直接编写代码;n用项目模板来创建;n引用.NET框架的System.Windows.Forms命名空间和System.Windows.Forms.Form类。3.2 窗体窗体 17n3.2.2 窗体的属性和方法 n窗体的属性决定了窗体的外观和操作。下面是窗体的一些主要属性:(1)Text:用来指定窗体的标题内容。(2)Size和StartPosition:用来指定窗体显示的大小和位置。(3)ForeColor:用来更改窗体内所有控件默认前景色。(4)FormBor
9、derStyle:用来指定窗体的边框类型。(5)MinimizeBox和MaximinzeBox:指定窗体是否显示最小化、最大化按钮。(6)TopMost:用来指定窗体是否应显示为应用程序的最顶层窗体。(7)WindowState:用来指定窗体运行时的状态。(8)Opacity:用来指定窗体的不透明度级别(0.01.0)。(9)Icon:用来指定窗体的图标。3.2 窗体窗体 18n3.2.3 窗体的常用方法有:(1)Acitvate():激活窗体使其获得焦点。(2)BringToFront()和SendToBack():将某个窗体置于Z顺序的前面(或后面)。(3)Close():关闭窗体。(4
10、)Contains():判断指定控件是否为窗体的子控件。(5)GetChildAtPoint():检索位于指定位置处的子控件。(6)GetNextControl():按照窗体上子控件的Tab顺序向前或向后检索下一个控件。(7)Hide():隐藏窗体。(8)Invalidat():使窗体的特定区域无效并发送重新绘制消息。(9)Refresh():强制控件使其工作区无效并立既重绘自己和任何子控件。(10)ResetXXX():将XXX属性重置为其默认值。(11)Show()和ShowDialog():Show()和ShowDialog()都可以用来显示窗体。3.2 窗体窗体 19n【例例3-3】启
11、动界面。n建立一个启动界面程序,运行效果如图所示。n当程序运行时,启动界面显示一幅图片,进度条自动开始走动,图片随进度条的走动渐渐显示清晰;n进度条到头时,关闭该窗口,进入主窗口;3.2 窗体窗体 203.3 对话框对话框n对话框是一种简单的窗口,主要用于向用户显示提示信息或接受用户输入的信息。n在C#提供了一些标准的对话框供用户使用。n对话框与窗口的不同,主要是对话框可以处于模态状态。n处于模态的对话框,要求用户必须作出响应,否则无法激活其他窗口。21n3.3.1 消息对话框n消息对话框是最简单的一类对话框,用来显示一些提示、警告等信息。n在.NET框架中,使用MessageBox类来封装消
12、息对话框,但它不能创建MessageBox实例,而只能调用其静态成员方法Show显示消息对话框。3.3 对话框对话框22n3.3.1 消息对话框 如,下面代码运行结果如图所示。MessageBox.Show(你喜欢Visual C#.NET吗?);3.3 对话框对话框23例如下面的代码,其运行结果如图所示。if(DialogResult.Yes=MessageBox.Show(退出吗?,提问,MessageBoxButtons.YesNo,MessageBoxIcon.Question,MessageBoxDefaultButton.Button1 )Application.Exit();3.
13、3 对话框对话框24n3.3.2 通用对话框n在Windows应用程序中,经常进行打开或保存文件、选择颜色或字体、打印文档等操作。n.NET框架中System.Windows.Forms命名空间中为这些操作提供了一组标准用户界面对话框,称为“通用对通用对话框话框”。n通用对话框都是从一个公共的基类System.Windows.Forms.CommonDialog派生而来的。3.3 对话框对话框253.3 对话框对话框26n3.3.3 自定义对话框n用户可以根据自己的需要创建对话框。n自定义的对话框实际上也是窗体。n作为对话框的窗体在外观上与一般的窗体在外观上是有所区别的,对话框没有控制菜单及最
14、大化和最小化按钮,不能改变大小,多以模态方式显示,以防止用户在对话框外执行任务。3.3 对话框对话框273.4 标签、文本框和按钮标签、文本框和按钮 n3.4.1 标签(Label)n.NET框架中Label类封装了标签控件。标签用于显示用户不能编辑的文本或图像。n1标签的属性 (1)BackColor和AutoSize:通过将Label的BackColor属性设置为Color.Transparent,可使该标签成为透明的。使用透明标签时,请只使用当前设备坐标系在容器上绘制,否则就可能无法正确绘制 Label 背景。(2)Label 控件可为单行或多行,可以为固定大小,也可以自动调整自身大小以
15、适应其标题。AutoSize 属性设为真时,标签自动调整大小以适应较大或较小的标题。如果将 AutoSize 设置为 false,则 Text 属性中指定的文字将切换到下一行(如果可能),但该控件不会增大。28(2)Image:获取或设置显示在 Label 上的图像。(3)ImageAlign:获取或设置在控件中显示的图像的对齐方式。(4)ImageIndex:获取或设置在 Label 上显示的图像的索引值。(5)ImageList:获取或设置包含要在 Label 控件中显示的图像的 ImageList。(6)UseMnemonic:获取或设置一个值,该值指示控件是否将控件的 Text 属性中
16、的“and”符(&)解释为访问键前缀字符。3.4 标签、文本框和按钮标签、文本框和按钮 29n2使用Label 控件创建访问键n使用Label控件创建访问键的步骤如下:(1)先添加标签和另一个控件。将该标签的TabIndex 属性设置为比另一个控件小1。(2)将该标签的UseMnemonic 属性设置为 true。(3)在该标签的Text 属性中使用“and”符(&)为该标签分配访问键。label1.UseMnemonic=true;label1.Text=&Print;label2.UseMnemonic=true;label2.Text=&Copy&Paste;3.4 标签、文本框和按钮标
17、签、文本框和按钮 30n3使用标签显示图像使用标签显示图像n除了显示文本外,Label 控件还可使用 Image 属性显示图像n或使用 ImageIndex 和 ImageList 属性组合显示图像。3.4 标签、文本框和按钮标签、文本框和按钮 31n3.4.2 文本框n.NET框架中TextBox类封装了文本框控件,它是从TextBoxBase类派生的,用于显示或输入文本。(1)Multiline和ScrollBars:Multiline获取或设置一个值,该值指示它是否为多行文本框控件。ScrollBars获取或设置哪些滚动条应出现在多行TextBox 控件中。(2)AcceptsTab 和
18、 AcceptsReturn:AcceptsReturn获取或设置一个值,该值指示在多行 TextBox 控件中按 ENTER 键时,是在控件中创建一行新文本还是激活窗体的默认按钮。AcceptsTab 获取或设置一个值,该值指示在多行文本框控件中按 TAB 键时,是否在控件中键入一个 TAB 字符,而不是按选项卡的顺序将焦点移动到下一个控件。3.4 标签、文本框和按钮标签、文本框和按钮 32n3.4.2 文本框(3)MaxLength:获取或设置用户可在文本框控件中键入或粘贴的最大字符数。(4)PasswordChar:获取或设置字符,用于屏蔽单行 TextBox 控件中的密码字符。(5)R
19、eadOnly:获取或设置一个值,该值指示文本框中的文本是否为只读。3.4 标签、文本框和按钮标签、文本框和按钮 332文本框的基本操作文本框的基本操作 (1)设置焦点 使用Focus()方法。例如:textBox1.Focus();(2)选择文本 选择文本一般用鼠标或键盘进行操作。如果用代码进行,可以使用文本框的从基类TextBaseBox继承的方法Select()或SelectAll()。Select()方法有两个参数分别确定要选择文本的起始位置和要选择文本的字符个数。也可以利用文本框的属性来选择文本,SelectionStart、SelectionText、SelectionLength
20、:3.4 标签、文本框和按钮标签、文本框和按钮 34 (3)文本操作 添加文本使用AppendText()方法,清除文本使用Clear()方法,撤销文本的上一次操作用Undo()方法;从文本框的撤销缓冲区中清楚关于最近操作的信息使用ClearUndo()方法。(4)限制文本输入 要限制某些文本不被输入到 TextBox 控件,可以为 KeyDown 事件创建一个事件处理程序,以便验证在控件中输入的每个字符。也可以通过将 ReadOnly 属性设置为 true 来限制 TextBox 控件中的所有数据项输入。(5)获取多行文本框文本 通过Text属性可获得全部文本,不能单独获得某一行文本。要获得
21、某一行文本,可使用Lines属性,Lines属性是一个字符串数组,它的每一个元素对应多行文本框的一行文本。3.4 标签、文本框和按钮标签、文本框和按钮 353文本框的常用事件文本框的常用事件(1)GotFocus事件:该事件在文本框接收焦点时发生。(2)LostFocus事件:该事件在文本框失去焦点时发生。(3)TextChanged事件:文本的Text属性的值改变时发生。3.4 标签、文本框和按钮标签、文本框和按钮 36n【例例3-4】设计一个登录程序。n登录窗口是很多应用系统中不可缺少的组成部分。n通过验证用户输入的用户名和密码,决定是否允许用户进入系统。n可在一定程度上保证系统的安全。3
22、.4 标签、文本框和按钮标签、文本框和按钮 373.5 菜单和多文档界面菜单和多文档界面 n3.5.1 菜单nWindows 窗体上的菜单是使用 MainMenu 对象创建的,该对象是一个 MenuItem 对象集合。n可以在设计时向 Windows 窗体添加菜单,方法是添加 MainMenu 组件然后使用菜单设计器向其追加菜单项。n可以用编程方法添加菜单,方法是向 Windows 窗体添加一个或多个 MainMenu 对象并向该集合中添加 MenuItem 对象。381菜单的主要属性菜单的主要属性(1)MainMenu的属性 MenuItems:获取一个值,通过该值指示与菜单关联的 Menu
23、Item 对象的集合。通过集合类的通用操作方法Add、AddRange等可以用来添加菜单项。RightToLeft:获取或设置控件显示的文本是否从右向左显示。(2)MenuItem的主要属性 Checked:获取或设置一个值,通过该值指示选中标记是否出现在菜单项文本的旁边。Index:获取或设置一个值,通过该值指示菜单项在其父菜单中的位置。IsParent:获取一个值,通过该值指示菜单项是否包含子菜单项。MenuItems:获取一个值,通过该值指示与菜单关联的 MenuItem 对象的集合。MergeOrder:获取或设置一个值,通过该值指示菜单项与另一个项合并时的相对位置。3.5 菜单和多文
24、档界面菜单和多文档界面 39MergeType:获取或设置一个值,通过该值指示该菜单项的菜单与另一个菜单合并时该菜单项的行为。Mnemonic:获取一个值,通过该值指示与此菜单项关联的助记字符。MdiList:获取或设置一个值,通过该值指示是否使用在关联窗体内显示的多文档界面(MDI)子窗口列表来填充菜单项。RadioCheck:获取或设置一个值,通过该值指示 MenuItem(如果已选中)是否显示单选按钮而不是选中标记。Shortcut:获取或设置一个值,通过该值指示与菜单项关联的快捷键。ShowShortcut:获取或设置一个值,通过该值指示与菜单项关联的快捷键是否在菜单项标题的旁边显示。
25、Text:获取或设置一个值,通过该值指示菜单项标题。Visible:获取或设置一个值,通过该值指示菜单项是否可见。3.5 菜单和多文档界面菜单和多文档界面 40n2菜单的事件菜单的事件n在菜单类Menu、MainMenu和MenuItem中,只有MenuItem类具有事件。常用的事件有Click、Popup和Select。(1)Click事件。当单击菜单项或使用为该菜单项定义的快捷键或访问键选择菜单项时发生。(2)Popup事件。在显示菜单项的菜单项列表之前发生。(3)Select事件。当用户将光标放在菜单项上时发生。3.5 菜单和多文档界面菜单和多文档界面 41n3使用菜单设计器创建菜单的一
26、般步骤使用菜单设计器创建菜单的一般步骤n(1)在设计时向 Windows 窗体添加菜单。n(2)添加菜单项。n(3)修改和删除菜单项。n(4)添加分隔符和快捷键。n (5)为菜单项的Click事件添加代码。3.5 菜单和多文档界面菜单和多文档界面 42n3.5.2 多文档界面 1多文档界面的特性多文档界面的特性n所有子窗体均显示在MDI父窗体的工作区中。用户可以改变子窗体大小或移动子窗体,但被限制在MDI父窗体中。n当最小化MDI子窗体时,它的图标将显示于MDI父窗体上而不是在任务栏中。当最小化MDI父窗体时,所有的子窗体也被最小化,只有MDI父窗体的图标出现在任务栏。n当最大化一个MDI子窗
27、体时,它的标题与MDI父窗体的标题一起显示在MDI父窗体的标题栏上。nMDI父窗体和MDI子窗体都可以有自己的菜单,当子窗体被加载时,其上的菜单可以按指定的方式与父窗体的菜单合并。3.5 菜单和多文档界面菜单和多文档界面 43n2与多文档界面有关的属性、方法和事件与多文档界面有关的属性、方法和事件(1)常用的MDI父窗体的属性ActiveMdiChild:表示当前活动的MDI子窗体。IsMdiContainer:获取或设置窗体是否为MDI父窗体。MdiChildren:以数组形式返回MDI子窗体。(2)常用的MDI子窗体的属性:IsMdiChild:获取或设置窗体是否都为MDI子窗体。MdiP
28、arent:指定子窗体的MDI父窗体。(3)与多文档界面有关的方法和事件 与多文档界面有关的方法,主要是父窗体的LayoutMdi方法,该方法的调用格式如下:MDI父窗体名.LayoutMdi(Value);3.5 菜单和多文档界面菜单和多文档界面 44n3菜单合并菜单合并n父窗体和子窗体可以使用不同的菜单,这些菜单会在打开子窗体时合并。可以通过设置MergeOrder属性和MergeType属性指定合并的方式。(1)MergeOrder:用来确定当两个菜单合并时菜单项出现的顺序,具有较低MergeOrder的菜单项会首席出现。(2)MergeType:当合并的两个菜单的某些菜单项的Merge
29、Order属性值相等时,使用该属性可以控制这些菜单项的显示方式。3.5 菜单和多文档界面菜单和多文档界面 45n【例例3-5】文本文件显示程序。n本案例建立一个MDI应用程序,能够显示多个文本文件。n程序运行时的菜单如图3-14(a)和图3-14(b)所示。n打开了多个文件后的程序运行界面分别如图3-14(C)和图3-14(d)所示。n程序运行时“文件”“打开”命令将弹出一个打开对话框让用户选择一个文件打开。n打开文件后“文件”菜单中多一项“关闭”,如图3-14(C),执行它将关闭当前打开的文件,执行“文件”“退出”命令退出应用程序。n“窗口”菜单的前四项用来对子菜窗口进行相应的排列,“窗口”
30、菜单中的“关闭所有子窗口”命令用于关闭所有子窗口,“窗口列表”用来列出打开的所有子窗体。3.5 菜单和多文档界面菜单和多文档界面 463.6 工具栏和状态栏工具栏和状态栏 n在Windows窗体中,ToolBar类用来封装工具栏的外观和功能。1常用的属性常用的属性(1)ToolBar的属性(2)ToolBarButton的属性2用设计器向窗体添加工具栏一般步骤用设计器向窗体添加工具栏一般步骤47n3.6.2 状态栏n通过将 ShowPanels 属性设置为 false(默认值)并将状态栏的 Text 属性设置为希望出现在状态栏中的文本,可在状态栏中显示一个消息。n通过将 ShowPanels
31、属性设置为 true 并使用 StatusBarPanelCollection 类的 Add 方法,可将状态栏分割为多个面板以显示一种以上类型的信息。3.6 工具栏和状态栏工具栏和状态栏 483.7组框和面板组框和面板n3.7.1 组框(GroupBox)nGroupBox 显示围绕一组控件的框架(带或不带标题)。n使用 GroupBox 对窗体上的控件集合进行逻辑分组。组框是可用于定义控件组的容器控件。n组框的典型用途是作为包含RadioButton控件的逻辑组。如果有两个组框,每个组框都包含多个单选按钮,每组按钮都互相排斥,则每组设置一个选项值。n通过使用Controls属性的Add方法,
32、可将控件添加到 GroupBox。49n3.7.2 面板(Panel)nPanel是一个包含其他控件的控件。n可以使用 Panel 来组合控件的集合,例如一组 RadioButton 控件。n与其他容器控件(如 GroupBox 控件)一样,如果 Panel 控件的 Enabled 属性设置为 false,则也会禁用包含在 Panel 中的控件。3.7组框和面板组框和面板503.8 复选钮和单选钮复选钮和单选钮 n3.8.1复选钮(CheckBox)nCheckBox可为用户提供一项选择,如“真/假”或“是/否”。n复选钮控件可以显示一个图像或文本,或两者都显示。n多个CheckBox控件构成
33、一组选项时,可以进行多重选择,相互之间不影响。51n(1)复选钮的基本属性nAppearance:获取或设置确定复选框控件外观的值。如果将Appearance属性设置为Appearance.Button,则RadioButton 控件的外观可以像命令按钮一样。当选定它时,它看似已被按下。nText:获取或设置与此控件关联的文本。nTextAlign:获取或设置与 CheckBox 控件关联的文本标签的对齐方式。nImage:获取或设置显示在按钮控件上的图像。nImageList:获取或设置包含按钮控件上显示的 Image 的 ImageList。nImageIndex:获取或设置按钮控件上显示
34、的图像的图像列表索引值。nChecked:获取或设置一个值,该值指示是否已选中控件。3.8 复选钮和单选钮复选钮和单选钮 52n(2)复选钮的主要事件CheckedChanged事件。当Checked 属性的值更改时发生。CheckStateChanged事件。当CheckState 属性的值更改时发生。Click事件。在单击控件时发生。3.8 复选钮和单选钮复选钮和单选钮 53n3.8.2 单选按钮(RadioButton)nRadioButton 和 CheckBox 控件的功能相似:它们提供用户可以选择或清除的选项。n不同之处在于,可以同时选定多个 CheckBox 控件,而单选按钮却是
35、互相排斥的。3.8 复选钮和单选钮复选钮和单选钮 54n(1)单选按钮的基本属性nAppearance:获取或设置确定单选按钮控件外观的值。如果将 Appearance 属性设置为 Appearance.Button,则 RadioButton 控件的外观可以像命令按钮一样。当选定它时,它看似已被按下nText:获取或设置与此控件关联的文本。nTextAlign:获取或设置与 CheckBox 控件关联的文本标签的对齐方式。nImage:获取或设置显示在按钮控件上的图像。nImageList:获取或设置包含按钮控件上显示的 Image 的 ImageList。nImageIndex:获取或设置
36、按钮控件上显示的图像的图像列表索引值。nChecked:获取或设置一个值,该值指示是否已选中控件。3.8 复选钮和单选钮复选钮和单选钮 55n(2)单选按钮的主要事件nCheckedChanged事件。当 Checked 属性的值更改时发生。nClick事件。在单击控件时发生。3.8 复选钮和单选钮复选钮和单选钮 56n【例例3-6】单选钮和复选钮的使用。n建立一个使用单选钮和复选钮的应用程序n界面上有一个文本框,两组单选钮和一组复选钮。n两组单选钮分别用于设置文本框的字体和字号n一组复选钮用于设置文本框的字型。3.8 复选钮和单选钮复选钮和单选钮 573.9列表框、组合框和复选列表框列表框、
37、组合框和复选列表框n3.9.1列表框(ListBox)nListBox 控件通过显示多个选择项,供用户选择其中一项或多项,达到与用户对话的目的。nListBox 控件可使用 SelectionMode 属性提供单项选择或多重选择。nListBox 还提供 MultiColumn 属性,以启用按多列显示项而不是项的垂直列表。这使控件得以显示更多可见项,并使用户不必滚动到某项。58n(1)列表框的主要属性nItems:获取或设置ListBox 的项。nMultiColumn:获取或设置一个值,该值指示 ListBox 是否支持多列。nColumnWidth:获取或设置多列ListBox 中列的宽度
38、。nSelectedIndex:获取或设置ListBox中当前选定项的从零开始的索引。nSelectedIndices:获取一个集合,该集合包含ListBox中所有当前选定项的从零开始的索引。3.9列表框、组合框和复选列表框列表框、组合框和复选列表框59nSelectedItem:获取或设置ListBox中的当前选定项。nSelectedItems:获取包含ListBox中当前选定项的集合。nSelectionMode:获取或设置在 ListBox 中选择项所用的方法。nSorted:获取或设置一个值,该值指示 ListBox 中的项是否按字母顺序排序。nTopIndex:获取或设置 List
39、Box 中第一个可见项的索引。3.9列表框、组合框和复选列表框列表框、组合框和复选列表框60n(2)列表的常用方法nClearSelected():取消选择 ListBox 中的所有项。nFindString():查找 ListBox 中以指定字符串开始的第一个项。nItems.Add():向 ListBox 的项列表添加项。nItems.Clear():从集合中移除所有的项。nItems.Insert():将项插入列表框的指定索引处。nItems.Remove():从集合中移除指定的对象。nItems.RemoveAt():移除集合中指定索引处的项。3.9列表框、组合框和复选列表框列表框、组
40、合框和复选列表框61n(3)获得用户选择n在单选的情况下,可以通过SelectedItem和SelectedIndex属性获取或设置选中列表项的内容和索引。nListBox类的SetSelected()方法可以用来设置指定列表项的选定。n格式如下:void SetSelected(int index,bool value);3.9列表框、组合框和复选列表框列表框、组合框和复选列表框62n3.9.2 组合框(ComboBox)n组合框是组合了文本框和列表框的特性而形成的一种控件。n组合框分两个部分显示:顶部是一个允许输入文本的文本框,下面的列表则显示列表项。两部分分别与文本框和列表的功能基本一致
41、。3.9列表框、组合框和复选列表框列表框、组合框和复选列表框63n3.9.3 复选列表框(CheckedListBox)n复选列表框扩展了ListBox,它在列表项的旁边显示复选标记。n与列表一样,可以用Add和AddRannge放或通过字符串集合编辑器来添加列表项。n在CheckedListBox中可以显示多 个列表项,SelectionMode属性的唯一可能值是SelectionMode.None。3.9列表框、组合框和复选列表框列表框、组合框和复选列表框64n【例例3-7】在线购物。n建立一个模拟在线购物程序n用户输入相应的信息后单击“确定”按钮,显示出用户提交的有关信息。3.9列表框、组合框和复选列表框列表框、组合框和复选列表框65