《Visual Basic 2005 程序设计》第8章 界面设计_第1页
《Visual Basic 2005 程序设计》第8章 界面设计_第2页
《Visual Basic 2005 程序设计》第8章 界面设计_第3页
《Visual Basic 2005 程序设计》第8章 界面设计_第4页
《Visual Basic 2005 程序设计》第8章 界面设计_第5页
已阅读5页,还剩78页未读 继续免费阅读

下载本文档

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

文档简介

第8章界面设计1本章主要内容:添加菜单。标准对话框介绍。创建工具栏。实现上下文菜单。创建状态栏。创建一个记事本综合实例。2用户界面的设计作为人机交互的窗口,在成功的程序设计中起着重要的作用。本章将介绍用户界面设计中常用的控件,读者将学习如何为应用程序创建菜单、工具栏、上下文菜单、多种对话框及状态栏,并通过建立一个记事本应用程序来掌握这些控件的使用。3VisualBasic2005中引入了菜单(MenuStrip)、弹出菜单(ContextMenuStrip)、工具栏(ToolStrip)和状态栏(StatusStrip)等界面设计的组件,它们位于工具箱的“菜单和工具栏”部分,如图8-1所示。48.1创建菜单项用户在运行一个软件时,首先会查看菜单项,来了解软件的功能,完善的菜单有助于程序的使用。VisualBasic2005中,将菜单添加到窗体中,是通过MenuStrip控件来实现的。创建菜单过程非常简单,下面通过创建记事本应用程序的菜单来学习和掌握菜单的建立。5例8.1创建记事本应用程序程序,创建记事本的菜单项。具体操作过程:⑴新建项目,选择“Windows应用程序”,项目名为“我的记事本”。⑵在解决方案资源管理器中,把“Form1.vb”改为“frmNotePad.vb”。⑶打开窗体设计视图,选择窗体,在属性框中修改窗体属性:StartPosition为“CenterScreen”;Text为“我的记事本”。6⑷双击工具箱的MenuStrip项,给窗体添加一个MenuStrip控件。此时,如图8-2所示,在系统为不可见控件(如Timer等)预留的窗体下方区域,显示新添加的MenuStrip控件,在窗体标题栏下方显示“请在此键入”的提示框。图8-2添加MenuStrip控件7⑸选择窗体下方的MenuStrip1控件,在属性框中修改MenuStrip控件属性:选择Items属性,在弹出的对话框“项集合编辑器”中编辑顶级菜单,如图8-3所示。图8-3通过项集合编辑器来设置菜单项8⑹在图8-3所示的窗口中,选自左侧的成员“MenuStrip1”,修改其Name属性为mnuMain。在左侧的下拉列表中选择MenuItem,点击“添加”按钮添加一个“ToolStripMenuItem1”,修改其Name属性为“mnuFile”,Text属性为“文件(&F)”。通过这样的方法依次添加其余的顶级菜单,具体属性设置见表8-1所示。9表8-1顶级菜单属性设置菜单名称(Name属性)Text属性mnuFile文件(&F)mnuEdit编辑(&E)mnuFormat格式(&O)mnuView查看(&V)mnuHelp帮助(&H)10提示:Text属性设置为“文件(&F)”,但却显示为“文件(F)”。这是因为“&”在菜单中具有特殊含义,如通过在字母“F”前添加“&”设置“F”为访问键,用户可以通过“Alt+F”组合键打开文件菜单。11设置好的主菜单如图8-4所示:12顶级菜单完后,记事本界面如图8-5所示13⑺在图8-4所示的“项集合编辑器”中,选择左侧的mnuFile,选择DropDownItems属性,在弹出的对话框“项集合编辑器(mnuFile.DropDownItems)”中为顶级菜单“文件(&F)”添加子菜单,方法同添加顶级菜单。子菜单各项属性设置见表8-2。14子菜单名称(Name属性)Text属性ShorCutKeys属性mnuNew新建(&N)Ctrl+NmnuOpen打开...(&O)Ctrl+OmnuSave保存(&S)Ctrl+SmnuSaveAs另存为…(&A)mnuPageSetup页面设置…(&U)mnuPrint打印…(&P)Ctrl+PmnuQuit退出(&X)15提示:ShorCutKeys属性设置菜单的快捷键,快捷键类似于访问键,但它不打开菜单,而直接执行某个菜单命令。设置快捷键和访问键时,应参考广泛使用的Windows应用程序标准,如用户习惯使用快捷键“Ctrl+N”执行新建文档命令,快捷键“Ctrl+C”用来执行拷贝任务,访问键“Alt+F”用来打开文件菜单。为菜单命令设置快捷键是通过修改菜单的ShorCutKeys属性来实现的,设置方式参照图8-6所示。16图8-6ShortcutKeys(快捷键)的设置17在设计菜单时,一般把功能相近的菜单设置在一起,并用Separator(分隔符)加以区分。在菜单“另存为…(&A)”和“打印…(&P)”后分别添加一个Separator。18设计好的记事本“文件”菜单如图8-7所示。图8-7设计好的子菜单19⑻按照以上的方法,为其余的顶级菜单添加子菜单。各菜单的子菜单属性设置见表8-3、8-4、8-5及8-6。(可参考Windows系统自带的记事本)20表8-3编辑菜单的子菜单属性设置子菜单名称(Name属性)Text属性ShorCutKeys属性mnuUndo撤销(&U)Ctrl+ZmnuCut剪切(&T)Ctrl+XmnuCopy复制(&C)Ctrl+CmnuPaste粘贴(&V)Ctrl+VmnuDelete删除(&L)DeletemnuFind查找(&P)…Ctrl+FmnuReplace替换(&R)…Ctrl+H

mnuAll全选(&A)Ctrl+AmnuData时间/日历(&D)F521表8-4格式菜单的子菜单属性设置子菜单名称(Name属性)Text属性Checked属性mnuWordWrap自动换行(&W)TruemnuFont字体(&F)…mnuBackColor背景色…22表8-5查看菜单的子菜单属性设置子菜单名称(Name属性)Text属性Checked属性mnuStatusBar状态栏(&S)TruemnuToolBar工具栏(&T)…True23提示:菜单项的Checked属性用来标识该项处于选中、未选中还是不确定状态。24表8-6帮助菜单的子菜单属性设置子菜单名称(Name属性)Text属性mnuAbout关于我的记事本25⑼添加RichTextBox控件,它是记事本编辑核心控件。修改其Name属性为rtboxMain,Text属性为空,Anchor属性为“Top,Left”,Dock属性为Fill。提示:RichTextBox控件是一个功能强大的字处理程序的核心,具有强大的文本格式化功能。Windows内置的“写字板”就是基于RichTextBox控件。其主要的属性见表8-7:26表8-7RichTextBox控件属性名称及功能说明属性名称说明SelectedTxt当前被选中的文字,SelectionStart被选中的文字的第一个字符的位置SelectionLength选中的文字的长度SelectionFont被选中的文字的字体SelectionColor被选中的文字的颜色SelectionBackColor被选中的文本的背景颜色278.2对菜单项进行编程设计模式下,在“文件(F)”菜单的子菜单“新建(N)Ctrl+N”上双击,输入如下代码:PrivateSubmnuNew_Click(ByValsenderAsSystem.Object,_

ByValeAsSystem.EventArgs)HandlesmnuNew.Click’清空RichTextBox控件中的内容rtboxMain.Clear()EndSub28设计模式下,双击工具箱的OpenFileDialog项,给窗体添加一个标准的文件打开对话框,修改其Name属性为openMyFile。在“文件(F)”菜单的子菜单“打开...(O)Ctrl+O”上双击,输入如下代码:29PrivateSubmnuOpen_Click(ByValsenderAsSystem.Object,_ByValeAsSystem.EventArgs)HandlesmnuOpen.Click

'调用“打开”对话框,并对其属性进行修改

WithopenMyFile'Filter属性限制打开对话框中显示的文件类型

.Filter="RTF格式(*.rtf)|*.rtf|普通文本(*.txt)|*.txt|所有文件(*.*)|*.*".Title()="打开文件"EndWithIfopenMyFile.ShowDialog()=Windows.Forms.DialogResult.OKThen'加载所要打开的文件内容至RichTextBox中

rtboxMain.LoadFile(openMyFile.FileName,RichTextBoxStreamType.RichText)

strfilename=openMyFile.FileName

Me.stlPath.Text=strfilenameEndIfEndSub30提示:RTF是RichTextFormat的简写,它一种保存文本及格式的标准,类似于HTML(超文本标记语言),使用简单的标记命令来描述文档格式,例如“\b”表示修饰的文本为粗体,有兴趣的读者可以用记事本等文本编辑程序打开RTF文档,查看其实际的RTF代码。也可以简单理解为TXT格式只是保存了内容及简单的格式信息(字体、字型及大小),RTF文件则保存了文本的内容及及更多的格式信息(颜色、段落、项目符号等)。31设计模式下,双击工具箱的SaveFileDialog项,给窗体添加一个标准的保存文件对话框,修改其Name属性为saveMyFile。在“文件(F)”菜单的子菜单“另存为...(A)”上双击,输入如下代码:32PrivateSubmnuSaveAs_Click(ByValsenderAsSystem.Object,_

ByValeAsSystem.EventArgs)HandlesmnuSaveAs.Click'调用“另保存”对话框,并对其属性进行修改

WithsaveMyFile'设置默认的文件后缀名

.DefaultExt="*.rtf"'.FileName=strfilename.Filter="RTF格式(*.rtf)|*.rtf|普通文本(*.txt)|*.txt|所有文件(*.*)|*.*".Title()="另存为"'如果用户指定的文件名已存在,设置“另存为”对话框是否显示警告。

.OverwritePrompt=TrueEndWith'保存文件

IfsaveMyFile.ShowDialog()=Windows.Forms.DialogResult.OK_AndsaveMyFile.FileName.Length>0Then

rtboxMain.SaveFile(saveMyFile.FileName,RichTextBoxStreamType.RichText)

strfilename=saveMyFile.FileName

Me.stlPath.Text=strfilenameEndIfEndSub33提示:RichTextBox.SaveFile方法用于将RichTextBox

的内容保存到文件中,参数格式:SaveFile(Pathasstring,FileTypeasRichTextBoxStreamType),其中Path为保存当前内容的文件路径,由“另存为“对话获取,FileType指定以不同格式保存,其值为RichTextBoxStreamType枚举类型之一,见表8-8:34表8-8RichTextBoxStreamType枚举类型值说明PlainText无格式方式保存的纯文本流,其中用空格来代替对象链接与嵌入(OLE)对象RichTextRTF格式文本UnicodePlainText包含用空格代替对象链接与嵌入(OLE)对象的文本流,采用Unicode编码TextTextOleObjs保存文本及嵌入的OLE对象RichNoOleObjs以无格式文本保存文本,用空格代替OLE对象35在设计模式下,在“文件(F)”菜单的子菜单“保存(S)Ctrl+S”上双击,输入如下代码:PrivateSubmnuSave_Click(ByValsenderAsSystem.Object,_ByValeAsSystem.EventArgs)HandlesmnuSave.Click'通过strfilename变量来确认本文件是否已经保存,如果没有保存调用另存对话框

If(strfilename.Length=0)Then

mnuSaveAs_Click(sender,e)Else

rtboxMain.SaveFile(strfilename,RichTextBoxStreamType.RichText)EndIfEndSub36在设计模式下,双击工具箱的PageSetupDialog项,给窗体添加一个标准的打印设置对话框,修改其Name属性为psMyFile。在“文件(F)”菜单的子菜单“页面设置...(U)”上双击,输入如下代码:37PrivateSubmnuPageSetup_Click(ByValsenderAsSystem.Object,_

ByValeAsSystem.EventArgs)HandlesmnuPageSetup.Click'定义一个打印对象,该对象将输出到打印机

DimpdAsPrintDocument=NewPrintDocument

psMyFile.Document=pd

psMyFile.ShowDialog()EndSub38提示:PageSetupDialog

组件是一个预先配置的对话框,用于在基于Windows的应用程序中设置页详细信息以便打印。可允许用户设置边框和边距调整量、页眉和页脚以及纵向或横向打印。提示:PageSetupDialog

组件是一个预先配置的对话框,用于在基于Windows的应用程序中设置页详细信息以便打印。可允许用户设置边框和边距调整量、页眉和页脚以及纵向或横向打印。39在设计模式下,双击工具箱的PrintDialog项,给窗体添加一个标准的打印设置对话框,修改其Name属性为printMyFile。在“文件(F)”菜单的子菜单“打印...(P)Ctrl+P”上双击,输入如下代码:40PrivateSubmnuPrint_Click(ByValsenderAsSystem.Object,_

ByValeAsSystem.EventArgs)HandlesmnuPrint.ClickDimpdAsPrintDocument=NewPrintDocument

printMyFile.Document=pdIfprintMyFile.ShowDialog()=Windows.Forms.DialogResult.OKThen

MessageBox.Show("没有安装打印机!","出错了!",MessageBoxButtons.OK,_

MessageBoxIcon.Error,MessageBoxDefaultButton.Button1)EndIfEndSub41提示:PrintDialog

控件是一个预先配置的对话框,可在基于Windows的应用程序中用于选择当前系统已安装的打印机、选择要打印的页以及确定其他与打印相关的设置。需要注意的是PrintDialog对话框并不将打印数据发送到打印机,完成打印还需编写相应的代码。42在设计模式下,在“编辑(E)”菜单的子菜单“撤销(U)Ctrl+Z”上双击,输入如下代码:PrivateSubmnuUndo_Click(ByValsenderAsSystem.Object,_

ByValeAsSystem.EventArgs)HandlesmnuUndo.Click'获取窗体记事本控件上的活动控件

DimrtbAsRichTextBox=Me.ActiveControl'Undo()方法用于撤消文本框中的上一个编辑操作。

rtb.Undo()

EndSub43表8-9编辑功能的主要方法方法名称功能说明Cut()当前选定内容移动到“剪贴板”中Copy()当前选定内容复制到“剪贴板”Paste()将剪贴板的内容粘贴到记事本中Redo()恢复上次撤消的操作44在设计模式下,在“编辑(E)”菜单的子菜单“删除(L)Del”上双击,输入如下代码:PrivateSubmnuDelete_Click(ByValsenderAsSystem.Object,_ByValeAsSystem.EventArgs)HandlesmnuDelete.Click

rtboxMain.SelectedText=""EndSub458.3添加查找及替换功能作为文本编辑软件,查找和替换是必不可少的功能。下面分别为记事本添加查找及替换功能。添加查找功能具体操作过程如下:⑴打开例8.1“我的记事本”项目,选择“项目”->“添加Windows窗体(F)…”,在弹出的“添加新项–我的记事本”对话框中选择“对话框”,名称改为“find.vb”,如图8-8所示。4647⑵点击“添加(A)”,为项目添加了一个对话框,修改对话框的Text属性为“查找”。删除对话框默认的按钮控件,为其添加新的按钮、标签、复选框及文本框等控件,安照表8-10设置相应的属性。48表8-10查找窗体主要控件属性设置控件Name属性Text属性ButtonBtnfind查找(&F)ButtonbtnFindNext查找下一个(&N)ButtonbtnCacel取消TextBoxTextBox1CheckBoxCheckBox1区分大小写(&C)49设计好的“查找”对话框如图8-9所示:50⑶在“查找(F)”按钮上双击,添加以下代码:PrivateSubBtnfind_Click(ByValsenderAsSystem.Object,_

ByValeAsSystem.EventArgs)HandlesBtnfind.Click'定义变量s表示字符串的开始位置

DimsAsInteger'先判断窗体上的复选项是否选中

'根据复选框来确定搜索模式

DimsearchModeAsMicrosoft.VisualBasic.CompareMethodIfCheckBox1.Checked=TrueThen

searchMode=CompareMethod.BinaryElse

searchMode=CompareMethod.TextEndIf51

s=InStr(frmNotePad.rtboxMain.Text,Me.TextBox1.Text,searchMode)Ifs=0Then

MsgBox("没有找到!")ExitSubEndIf'高亮选中找到的字符串

'确认rtboxMain的Hideselection属性为为false

frmNotePad.rtboxMain.Select(s-1,Me.TextBox1.Text.Length)'让选中的字符串进入可视区域

frmNotePad.rtboxMain.ScrollToCaret()EndSub52⑷在“查找下一个(N)”按钮上双击,添加以下代码:PrivateSubbtnFindNext_Click(ByValsenderAsSystem.Object,_

ByValeAsSystem.EventArgs)HandlesbtnFindNext.ClickDimsAsIntegerDimsearchModeAsMicrosoft.VisualBasic.CompareMethodIfCheckBox1.Checked=TrueThen

searchMode=Microsoft.VisualBasic.CompareMethod.BinaryElse

searchMode=Microsoft.VisualBasic.CompareMethod.TextEndIfs=InStr(frmNotePad.rtboxMain.SelectionStart+2,_

frmNotePad.rtboxMain.Text,Me.TextBox1.Text,searchMode)Ifs=0Then

MsgBox("找不到"&Me.TextBox1.Text)ExitSubEndIf

frmNotePad.rtboxMain.Select(s-1,Me.TextBox1.Text.Length)

frmNotePad.rtboxMain.ScrollToCaret()EndSub53提示:InStr([StartAsInteger,]String1AsString,String2AsString[,CompareAsCompareMethod])函数返回一个字符串在另一个字符串中的第一个匹配项的位置,它的返回值为一个整数,该整数指定一个字符串在另一个字符串中的第一个匹配项的起始位置。其中:Start可选。数值表达式,设置搜索的起始位置。如果省略该参数,则从第一个字符位置开始搜索。起始索引从一开始。String1必选。搜索的String表达式。String2必选。查找的String表达式。Compare可选。指定字符串比较的类型,参见表8-11。如果省略Compare,则由OptionCompare设置确定比较类型。54表8-11Compare参数选项值常数值说明Binary0执行二进制比较Text1执行文本比较55添加替换功能具体操作过程如下:⑴打开“我的记事本”项目,选择“项目”->“添加Windows窗体(F)…”,在弹出的“添加新项–我的记事本”对话框中选择“对话框”,名称改为“frmReplace.vb”,如图8-10所示。56⑵点击“添加(A)”,为项目添加了一个新对话框,修改对话框的Text属性为“替换”。删除对话框默认的按钮控件,为其添加新的按钮、标签、复选框及文本框等控件,安照表8-12设置相应的属性。57表8-12查找窗体主要控件属性设置控件Name属性Text属性ButtonbtnFindNext查找下一个(&F)ButtonbtnReplace替换(&R)ButtonbtnReplaceAll全部替换(&A)ButtonbtnCancel取消TextBoxTextBox1TextBoxTextBox2CheckBoxCheckBox1区分大小写(&C)58设计好的“替换”对话框如图8-11所示,在PublicClassfrmReplace的前、后分别输入以下代码:ImportsSystem.Windows.FormsPublicClassfrmReplaceDima=0

59图8-11设计好的替换对话框60⑶在“查找下一个(F)”按钮上双击,添加以下代码:PrivateSubbtnFindNext_Click(ByValsenderAsSystem.Object,_ByValeAsSystem.EventArgs)HandlesbtnFindNext.ClickDimsAsIntegerDimsearchModeAsMicrosoft.VisualBasic.CompareMethodIfCheckBox1.Checked=TrueThen

searchMode=Microsoft.VisualBasic.CompareMethod.BinaryElse

searchMode=Microsoft.VisualBasic.CompareMethod.TextEndIfIfa=0Thens=InStr(frmNotePad.rtboxMain.Text,Me.TextBox1.Text,searchMode)a=a+1Elses=InStr(frmNotePad.rtboxMain.SelectionStart+2,_

frmNotePad.rtboxMain.Text,Me.TextBox1.Text,searchMode)EndIfIfs=0Then

MsgBox("找不到"&Me.TextBox1.Text)ExitSubEndIf

frmNotePad.rtboxMain.Select(s-1,Me.TextBox1.Text.Length)

frmNotePad.rtboxMain.ScrollToCaret()EndSub61⑷在“替换(R)”按钮上双击,添加以下代码:PrivateSubbtnReplace_Click(ByValsenderAsSystem.Object,_

ByValeAsSystem.EventArgs)HandlesbtnReplace.ClickIffrmNotePad.rtboxMain.SelectedText<>""Then

frmNotePad.rtboxMain.SelectedText=Me.TextBox2.TextEndIf

btnFindNext_Click(sender,e)EndSub62⑸在“全部替换(A)”按钮上双击,添加以下代码:PrivateSubbtnReplaceAll_Click(ByValsenderAsSystem.Object,_ByValeAsSystem.EventArgs)HandlesbtnReplaceAll.Click

frmNotePad.rtboxMain.Text=Replace(frmNotePad.rtboxMain.Text,_TextBox1.Text,TextBox2.Text)MsgBox("完成全部替换!")EndSub638.4创建工具栏工具栏实质是菜单项的快捷方式,是用户执行程序常用功能最方便的方式之一。不同于菜单栏,工具栏总是可见,可以实现即点即用。工具栏还应该设置工具功能的提示(ToolTip),只要用户将鼠标指向工具栏的按钮,就知道其功能,方便用户使用。工具栏使用ToolStrip控件创建。下面继续完善记事本,为记事本添加工具栏。64例8.2在例8-1的基础上,继续完善记事本功能,创建一个工具栏。具体操作过程:⑴打开例8-1“我的记事本”项目,在窗体设计视图下,双击工具箱中的ToolStrip项,添加一个新的ToolStrip项到窗体中,修改工具栏(ToolStrip1)的Name属性为“tbrMain”,现在的记事本窗体如图8-12所示。图8-12为“我的记事本”添加工具栏(ToolStrip)65⑵选择工具栏“tbrMain”,打开左下角的下拉列表,选择Button,然后点击“添加”创建一个新的按钮(见图8-13),设置其属性如表8-13所示:66表8-13新添加的按钮属性设置属性值NametbbNewText新建ToolTipText新建67提示:ToolTipText属性设置当鼠标滑动到工具栏图标时显示的提示文本。此时运行程序时,新添加的工具栏按钮图标为系统默认的图片,通过修改Image属性,在图8-14所示对话框,更换按钮显示的图片。68提示:VisualBasic2005的工具栏提供了Windows应用程序常用的工具栏标准项,满足了大多数应用程序的需求。插入标准项方法:在工具栏上点右键,弹出的菜单中选择“插入标准项”,如图8-15所示,本例中的工具栏采用这种方法添加,在实际编程中可以根据程序需要对标准项进行删减修改。通过插入标准项的方式创建的工具栏如图8-16所示。69图8-15插入标准项工具栏70图8-16插入标准项的工具栏71右键点击最后一个图标,选择删除。然后选择工具栏各个图标,依次修改其属性如表8-14:72表8-14工具栏上各项的属性设置顺序Name属性功能说明1tbarNew新建文档2tbarOpen打开文档3tbarSave保存文档4tbarPrint打印5tbarCut剪贴6tbarCopy复制7tbarPaste粘贴73双击工具栏上图标,为其添加相应代码,由于具体功能实现代码前面已经添加,现在只需调用相应代码即可,如第一个图标添加如下代码:PrivateSubtbarNew_Click(ByValsenderAsSystem.Object,_ByValeAsSystem.EventArgs)HandlestbarNew.Click

mnuNew_Click(sender,e)EndSub参照以上代码,依次为工具栏上每个图标添加相应代码。748.5创建上下文菜单上下文菜单(也称右键菜单)是右键点击窗体上特定对象区域时弹出的菜单。创建上下文菜单是通过ContextMenuStrip控件来实现的。例8.3在例8-2的基础上,继续完善

温馨提示

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

评论

0/150

提交评论