版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VB.NET程序设计实用教程第7章
Windows高级界面设计本章任务:体育彩票摇奖程序简易文本编辑器程序图文浏览器程序计算机应用教研室操作系统本章要点菜单的制作方法标准对话框的使用工具栏的制作方法多窗体应用程序设计状态栏的制作方法要点MDI应用程序设计7.1任务7-1:体育彩票摇奖程序——多窗体程序设计任务7-1描述:
编写一个七位号码体彩摇奖程序,程序中有三个窗体,分别如图7-1、图7-2和图7-3所示。程序运行时首先出现摇奖窗体,在该窗体上单击“摇奖”按钮,将不停地产生随机数并填充在七个文本框中,如图7-4所示。单击“停止”按钮将停止摇奖,此时在文本框中显示的数就是获奖号码。单击“公布”按钮将公布获奖号码,如图7-5所示。在该窗体上单击“返回”按钮将返回到摇奖窗体。单击“退出”按钮将出现如图7-6所示的“退出提示框”,单击“确定”按钮将退出应用程序。注意:在图7-1所示的窗体中还有一个定时器控件。计算机应用教研室操作系统
图7-1
摇奖窗体设计界面图7-2
公布中奖号码窗体设计界面
图7-3
“退出提示框”窗体设计界面图7-4
摇奖窗体运行界面
图7-5公布中奖号码窗体运行界面图7-6“退出提示框”窗体运行界面1.启动VB.NET,新建一个项目,项目类型为“Windows应用程序”,项目的存放位置为“D:\VBTASK\CH07”,项目名为“Task7_1”。2.把Form1窗体的Text属性值设置为“体育彩票摇奖程序”,把它的Name属性值设置为“frmTicketReward”。单击“解决方案资源管理器”中的“Form1.VB”窗体,然后在属性窗口中把它文件名属性设置为“frmTicketReward.vb”。然后执行【项目】→【Task7_1属性】命令,在出现的“Task7_1属性页”对话框中把“启动对象”设置为frmTicketReward”。注意:在多窗体程序设计中,如果要改变启动窗体,方法也是执行【项目】→【***属性】命令,在出现的“***属性页”对话框中把“启动对象”设置为相应窗体即可。
任务实现:控件名属性名属性值作用Label1Caption"号码"提示TextBox1~TextBox7Text""显示摇奖号码Button1Caption"摇奖"单击它开始摇奖Button2Caption"停止"单击它停止摇奖Button3Caption"公布"单击它弹出公布获奖号码窗体,公布中奖号码Button4Caption"退出"单击它弹出“退出提示框”提示是否退出程序Timer1EnabledIntervalFalse200每隔150毫秒产生一组号码3.对照图7-1摇奖窗体设计界面,为窗体添加控件并设置控件的属性。控件的属性设置如表7-1所示。
表7-1任务7-1中的frmTicketReward窗体中的控件属性设置及其功能计算机应用教研室操作系统4.单击工具栏上的“”按钮或执行【项目】→【添加Windows窗体】命令,将会出现如图7-7所示的【添加新项】对话框。5.在该对话框的“模板”下面的列表框中选中【Windows窗体】图标,在名称后面的文本框中输入窗体名“frmTicketPublish”,然后单击“打开”按钮,即为应用程序添加了一个名为“frmTicketPublish”窗体。把该窗体的Text属性值设置为“中奖号码公布”。注意:也可以选添加窗体,然后再修改其Name属性值。图7-7
“添加新项”对话框控件名属性名属性值作用Label1Caption"本期获奖号码如下:"提示TextBox1~TextBox7Text""显示中奖号码Button1Caption"返回"返回到摇奖窗体6.对照图7-2公布获奖号码窗体设计界面,为窗体添加控件并设置控件的属性。控件的属性设置如表7-2所示。7.采用与步骤4和步骤5同样的方法为项目再添加一个名为“frmExit”的窗体,并把它的Text属性值设置为“退出提示框”。表7-2
任务7-1中的frmTicketPublish窗体中的控件属性设置及其功能对象名属性名属性值说明Label1Text"真的要退出应用程序吗?"提示信息Button1TextDialogResult"确定"OK单击它将退出应用程序Button2TextDialogResult"取消"Cancel单击它将不退出应用程序8.对照图7-3退出提示框窗体设计界面,为窗体添加控件并设置控件的属性。控件的属性设置如表7-3所示。然后再把该窗体的FormBorderStyle属性值设置为“FixedSingle”,把AcceptButton属性值设置为“Button1”把CancelButton属性值设置为“Button2”。至此界面设计基本完成。表7-3
任务7-1中的frmExit窗体中的控件属性设置及其功能9.在“解决方案资源管理器”中双击“frmTicketReward”窗体,并切换到“frmTicketReward”窗体的代码窗口,在代码窗口的最顶部加上如下程序代码。ImportsTask7_1.frmTicketPublishImportsTask7_1.frmExit注意:在多窗体程序设计中,每个窗体相当于一个类,在一个窗体中要调用其它窗体,必须通过Imports语句把该窗体作为命名空间引入进来。10.在“
”下面编写如下程序代码,定义7个全局公享的整型变量,用来存放中奖号码。PublicShareda1,a2,a3,a4,a5,a6,a7AsInteger'存放摇出来的中奖号码注意:必须是在窗体的“Declaration”部分用“PublicShared”定义的变量才能被其它窗体使用。11.编写本窗体的Load事件过程代码,如下。
Private
Sub
frmTicketReward_Load(ByValsenderAs
System.Object,
ByValeAs
System.EventArgs)Handles
MyBase.LoadRandomize()'随机数初始化
End
Sub12.编写Button1按钮的Click事件过程代码,如下。
Private
SubButton1_Click(ByValsenderAs
System.Object,ByVal
eAs
System.EventArgs)HandlesButton1.ClickTimer1.Enabled=True
'启动定时器,开始摇号
Button2.Enabled=True
'停止按钮可用
Button1.Enabled=False
'摇奖按钮不可用
End
Sub13.编写Timer1控件的Tick事件过程代码,如下。
Private
SubTimer1_Tick(ByValsenderAs
System.Object,ByValeAs
System.EventArgs)HandlesTimer1.Tick
'产生七位随机数作为中奖号码
a1=Int(Rnd()*10):a2=Int(Rnd()*10)a3=Int(Rnd()*10):a4=Int(Rnd()*10)a5=Int(Rnd()*10):a6=Int(Rnd()*10)a7=Int(Rnd()*5)+1'最后一位是特别号,只能在1~5之间
'显示随机产生的七位号码
TextBox1.Text=CStr(a1):TextBox2.Text=CStr(a2)TextBox3.Text=CStr(a3):TextBox4.Text=CStr(a4)TextBox5.Text=CStr(a5):TextBox6.Text=CStr(a6)TextBox7.Text=CStr(a7)
End
Sub说明:该过程每隔200毫秒执行一个,产生7个随机数并显示在文本框中,产生摇奖的效果。14.运行程序,单击“摇奖”按钮,会发现各个文本框中不停地出现随机数。15.编写Button2按钮的Click事件过程代码,如下。
Private
SubButton2_Click(ByValsenderAs
System.Object,ByVal
eAsSystem.EventArgs)HandlesButton2.ClickTimer1.Enabled=False
'关闭定时器,结束摇号
Button3.Enabled=True
'公布按钮可用
Button2.Enabled=False
'停止按钮不可用
End
Sub16.运行程序,单击“摇奖”按钮摇奖后,单击“停止”按钮,会发现文本框中的数固定了下来,此时的值就可以认为是中奖号码。17.编写Button3按钮的Click事件过程代码,如下。
Private
SubButton3_Click(ByValsenderAs
System.Object,ByVal
eAs
System.EventArgs)HandlesButton3.Click
Dim
Frm
As
New
frmTicketPublish
'定义一个frmTicketPublish类的对象
Frm.Show()'显示该对象,窗体将显示出来
End
Sub18.编写Button4按钮的Click事件过程代码,如下。
Private
SubButton4_Click(ByValsenderAs
System.Object,ByVal
eAs
System.EventArgs)HandlesButton4.Click
Dim
frmExitDialog
As
New
frmExit
'根据退出窗体生成对象
If
frmExitDialog.ShowDialog()=DialogResult.OK
Then
'如果单击了“确定”按钮,则退出
Me.Close()'关闭本窗体
Application.Exit()'退出应用程序
End
If
End
Sub说明:(1)上述代码首先产生一个frmExit窗体的实例,然后调用该窗体实例的ShowDialog方法把该窗体实例以对话框的形式显示出来,如果用户在对话框中单击了“是”按钮,则退出应用程序。(2)在VB.NET中,除了可以使用Windows自带的标准对话框外,如MsgBox、InputBox等,用户还可以把自己设计的窗体定义成对话框。使用自定义对话框有以下几个要点。①将窗体的FormBorderStyle属性值设置为FixedDialog;②根据需要向窗体上添加控件;③使用窗体的ShowDialog方法显示窗体,即显示出对话框。19.运行程序,单击“退出”按钮,将会出现如图7-6所示的对话框,单击“是”按钮退出应用程序。20.在“解决方案资源管理器”中双击“frmTicketPublish”窗体并切换到该窗体,在所有代码之前,加上如下代码。ImportsTask7_1.frmTicketReward21.编写“frmTicketPublish”窗体的Load事件过程代码,如下。
Private
Sub
frmTicketPublish_Load(ByValsenderAs
System.Object,
ByValeAs
System.EventArgs)Handles
MyBase.Load
'把中奖号码显示在各文本框中
TextBox1.Text=CStr(a1):TextBox2.Text=CStr(a2)TextBox3.Text=CStr(a3):TextBox4.Text=CStr(a4)TextBox5.Text=CStr(a5):TextBox6.Text=CStr(a6)TextBox7.Text=CStr(a7)
End
Sub说明:在窗体中可以访问被引入的其他窗体中定义的全局共享变量。22.为该窗体的“关闭”按钮编写Click事件过程代码,如下。
Private
SubButton1_Click(ByValsenderAs
System.Object,ByVal
eAs
System.EventArgs)HandlesButton1.Click
Me.Close()'关闭本窗体
End
Sub23.运行程序,单击“摇奖”按钮进行摇奖,单击“停止”按钮产生中奖号码,单击“公布”按钮将会出现如图7-5所示的“中奖号码公布”窗口,单击“关闭”按钮将加到“摇奖”窗口。24.保存项目,至此本任务全部完成。归纳说明:Windows应用程序很少只由一个窗体组成,一般情况下一个应用程序均拥有很多个窗体。VB.NET项目刚建立时只有一个名为Form1的窗体,要建立多窗体应用程序应首先为项目添加窗体。在VB.NET中还可以任意指定其他窗体为启动窗体。本任务通过体育彩票摇奖程序的实现过程,讲解了多窗体程序设计的方法与注意事项。7.2任务7-2:简易文本编辑器程序——丰富格式文本框、菜单、对话框、工具栏、状态栏等的应用
任务7-2描述:编写一个简易文本编辑器程序,要求通过菜单能够实现文件的新建、打开、保存、另存为、退出等文件或应用程序操作功能,能够实现撤消、重做、剪切、复制、粘贴、删除、全选等编辑操作功能,能够实现设置文本的字体、颜色、背景色等格式操作功能。对于常用的功能还要通过工具栏实现,还应具有状态栏对当前的状态进行提示。程序的设计界面如图7-10所示,程序的运行界面如图7-11所示。图7-10程序设计界面
图7-11程序运行界面任务分析:本任务涉及到菜单、工具栏、状态栏等多种控件,中间涉及到多种编程技巧,分析起来较困难,将在讲解的过程中一步一步地加上详细分析。任务实现:1.启动VB.NET,新建一个项目,项目类型为“Windows应用程序”,项目的存放位置为“D:\VBTASK\CH07”,项目名为“Task7_2”。2.把Form1窗体的Text属性值设置为“简易文本编辑器”,把它的Name属性值设置为“frmTextEditor”。单击“解决方案资源管理器”中的“Form1.VB”窗体,然后在属性窗口中把它文件名属性设置为“frmTextEditor.vb”。然后执行【项目】→【Task7_2属性】命令,在出现的“Task7_2属性页”对话框中把“启动对象”设置为“frmTextEditor”。3.在工具箱上找到MainMenu(主菜单)控件图标“”,并把该控件添加到窗体上,标题栏下将出现菜单栏,如图7-12所示。图7-12添加了MainMenu控件后出现的菜单栏
图7-13在菜单栏中输入了“文件[&F]”菜单项4.在“请在此处输入”文字上单击,然后输入文字“文件[&F]”,如图7-13所示。然后在属性窗体中把该菜单项的名称设置为“MenuItem1”。5.在“文件[F]”下面的“请在此处输入”文字上单击,输入文字“新建[&N]”,然后在属性窗口中把Name属性值设置为MenuItem1_1,在属性窗口中选中Shortcut属性,单击其后的向下箭头按钮,在出现的列表中选择快捷键“CtrlN”,如图7-14所示。
图7-14为“文件[&F]”菜单输入了“新建[&N]”菜单项图7-15设计好的“文件”菜单6.使用同样的方法,为“文件[F]”菜单再添加5个菜单项,菜单项的标题文字、名称、快捷键如表7-4所示。设置好的文件菜单如图7-15所示。表7-4“文件”菜单中的其它菜单项及其属性设置菜单标题文字(Text属性值)菜单项名(Name属性值)快捷键(ShortCut属性值)打开[&O]...MenuItem1_2CtrlO保存[S]MenuItem1_3CtrlS另存为[A]...MenuItem1_4None-MenuItem1_5None退出[&X]MenuItem1_6CtrlX说明:菜单项的常用属性如下:(1)Text属性:该属性用来获取或设置一个值,通过该值显示菜单项标题。当使用Text属性为菜单项指定标题时,还可以在字符前加一个“&”号来指定热键(访问键,即加下划线的字母)。例如,若要将“File”中的“F”指定为访问键,应将菜单项的标题指定为“&File”。(2)Checked属性:该属性用来获取或设置一个值,通过该值指示选中标记是否出现在菜单项文本的旁边。如果要放置选中标记在菜单项文本的旁边,属性值为True,否则属性值为False。默认值为False。(3)DefaultItem属性:该属性用来获取或设置一个值,通过该值指示菜单项是否为默认菜单项。值为True时,是默认菜单项,值为False时,不是默认菜单项。菜单的默认菜单项以粗体的形式显示。当用户双击包含默认项的子菜单后,默认项被选定,然后子菜单关闭。(4)Enabled属性:该属性用来获取或设置一个值,通过该值指示菜单项是否可用。值为True时表示可用,值为False时表示当前禁止使用。(5)RadioCheck属性:该属性用来获取或设置一个值,通过该值指示选中的菜单项的左边是显示单选按钮还是选中标记。值为True时将显示单选按钮标记,值为False时显示选中标记。(6)Shortcut属性:该属性用来获取或设置一个值,该值指示与菜单项相关联的快捷键。(7)ShowShortcut属性:获取或设置一个值,该值指示与菜单项关联的快捷键是否在菜单项标题的旁边显示。如果快捷组合键在菜单项标题的旁边显示,该属性值True,如果不显示快捷键,该属性值为False。默认值为True。(8)MdiList属性:该属性用来获取或设置一个值,通过该值指示是否用在关联窗体内显示的多文档界面(MDI)子窗口列表来填充菜单项。若要在该菜单项中显示MDI子窗口列表,则设置该属性值为True,否则设置该属性的值为False。默认值False。7.单击“文件[F]”右边的“请在此处输入”,输入“编辑[&E]”形成编辑菜单,在属性窗口设置“编辑”菜单的名称为“MenuItem2”。再为“编辑”菜单输入7个菜单项,菜单项的标题文字、名称、快捷键如表7-5所示。设置好的文件菜单如图7-16所示。表7-5“编辑”菜单中的菜单项及其属性设置菜单标题文字(Text属性值)菜单项名(Name属性值)快捷键(ShortCut属性值)撤消[U]MenuItem2_1CtrlZ重做[R]MenuItem2_2CtrlY剪切[T]MenuItem2_3CtrlX复制[C]MenuItem2_4CtrlC粘贴[P]MenuItem2_5CtrlP删除[D]MenuItem2_6全选[A]MenuItem2_7CtrlA图7-16设计好的“编辑”菜单图7-17设计好了的“格式”菜单8.采用类似的方法设计格式菜单,设计好的格式菜单如图7-17所示,各菜单项及其属性设置如表7-6所示。表7-6“格式”菜单中的菜单项及其属性设置菜单标题文字(Text属性值)菜单项名(Name属性值)快捷键(ShortCut属性值)格式[&O]MenuItem3None字体[&F]...MenuItem3_1None颜色[C]...MenuItem3_2None-MenuItem3_3None背景MenuItem3_4None白色背景MenuItem3_4_1None灰色背景MenuItem3_4_2None注意:还需把“MenuItem3_4_1”菜单项的RadioCheck属性值设置为True,把它的Checked属性值设置为True。把“MenuItem3_4_2”菜单项的RadioCheck属性值设置为False。9.在工具箱中找到工具栏图标“”,并为窗体添加一个ToolBar控件(工具栏控件),控件名称为ToolBar1,如图7-18所示。图7-18添加的工具栏控件说明:对读者来说,工具栏并不陌生,如Word中的常用工具栏、格式工具栏等。工具栏是由一系列的图标按钮组成,形象化的图标与功能的对应,使应用程序界面具有更好的交互性。在VB.NET中,要实现工具栏,需要使用两个控件:ImageList控件和ToolBar控件。10.在工具箱中找到图像列表控件图标“
”,并向窗体上添加一个ImageList控件(图像列表控件),控件名为ImageList1。11.用鼠标单击ImageList1控件,然后在“属性”窗口中选中“Images”属性,单击其后的“…”按钮,将会出现如图7-19所示的“Image集合编辑器”对话框。12.单击“添加”按钮,将会出现“打开”文件对话框,在该对话框中定义要添加到工具栏上的按钮图片文件,然后按“打开”按钮,反复操作直到需要的图形文件全部添加到“Image集合编辑器”的成员列表中,如图7-20所示(添加了“新建”、“打开”、“保存”三个操作的按钮图片)。然后按“确定”按钮关闭“Image集合编辑器”对话框。图7-19“Image集合编辑器”对话框图7-20添加了图片文件后的“Image集合编辑器”对话框13.单击ToolBar1工具栏控件,设置它的ImageList属性值为“ImageList1”。然后再在“属性”窗口中单击“Buttons”属性后面的“…”按钮,将会出现“ToolBarButton集合编辑器”对话框。14.在该窗口中单击“添加”按钮,将会出现第一个按钮,并且在窗口的右边将出现该按钮的属性设置窗口,通过设置ImageIndex属性可以指定在按钮上显示的图片文件。图7-21是添加了三个按钮后的“ToolBarButton集合编辑器”对话框。图7-21添加了三个工具栏按钮后的“ToolBarButton集合编辑器”对话框15.单击“确定”按钮,关闭“ToolBarButton集合编辑器”对话框。设计好的工具栏如图7-22所示。图7-22设计好了的工具栏16.在工具箱中找到状态栏图标“”,并为窗体添加一个StatusBar控件(状态栏控件),控件名称为StatusBar1。说明:状态栏一般位于应用程序窗口的下面,用来显示程序的状态。17.选中StatusBar1控件,在“属性”窗口中选中Panel属性,单击其后的“…”按钮,打开“StatusBarPanel集合编辑器”对话框,在该编辑器中通过单击“添加”按钮为StatusBar添加三个面板,如图7-23所示。注意可以在该窗口的右边设置每个面板的属性,如Name等。图7-23添加了三个Panel面板的“StatusBarPanel集合编辑器”对话框18.单击“确定”按钮返回程序设计界面,选中StatusBar控件,把它的ShowPanels属性值设置为True。设计好的状态栏如图7-24所示。图7-24设计好的状态栏19.由于要在状态栏的某一Panel中显示当前时间,为实现该功能可添加一个Timer控件,设置该控件的Interval属性值为500,Enabled属性值为True。20.在工具箱中找到丰富格式文本框图标“”,并为窗体添加一个RichTextBox控件(丰富格式文本框控件),控件名称为RichTextBox1,控件位置任意,在运行时由程序自动设置成充满除工具栏和状态栏外的所有窗体部分。至此界面设计基本完成,设计好的界面如图7-10所示(没有对话框控件)。21.为窗体添加两个模块级变量,代码如下。
Dim
Fname
As
String
‘存放正在编辑的文件名,如果新建的文件尚末保存,则值为空串
Dim
FExtName
As
String
'扩展名22.编写一个名为“RichTextBoxResize”的通用过程,其作用是使丰富格式文本框充满除工具栏和状态栏外的所有空间。该过程在窗体加载时和改变大小时被调用。
'该过程使丰富格式文本框充满除工具栏和状态栏外的所有空间
Private
Sub
RichTextBoxResize()
'设置丰富格式文本框的起始位置为工具栏下面的最左上角
RichTextBox1.Top=ToolBar1.HeightRichTextBox1.Left=0
'设置丰富格式文本框的宽度与窗体的用户区宽度一样
RichTextBox1.Width=Me.ClientSize.Width
‘设置丰富格式文本框的高度为窗体用户区高度减去工具栏的高及状态栏的高度
RichTextBox1.Height=Me.ClientSize.Height-ToolBar1.Height–StatusBar1.Height
End
Sub23.在工具箱中找到“保存文件”对话框控件的图标“”,为窗体添加一个SaveFileDialog控件,该控件主要用来弹出Windows中标准的“保存文件”对话框。24.编写一个名为“SaveAs”的通用过程,代码如下。
该过程弹出“另存为”对话框,供用户选择或输入要保存的文件名,并把RichTextBox1中的文本保存到该文件中去
Private
Sub
SaveAs()SaveFileDialog1.Filter="文本文件(*.txt)|*.txt|RTF格式文件(*.RTF)|*.RTF"SaveFileDialog1.FilterIndex=1'设置当前文件过程器
SaveFileDialog1.Title="保存文件"'设置对话框的标题
SaveFileDialog1.InitialDirectory=Application.StartupPath
'初始目录设为启动路径
SaveFileDialog1.RestoreDirectory=True
'自动恢复初始目录
SaveFileDialog1.ShowDialog()'弹出另存为对话框
Fname=SaveFileDialog1.FileName'获取保存的文件名
If(Fname<>"")Then
'如果输入了文件名
If(SaveFileDialog1.FilterIndex=1)Then
'如果是文本文件
RichTextBox1.SaveFile(Fname,RichTextBoxStreamType.PlainText)'文本文件
FExtName="txt"
ElseRichTextBox1.SaveFile(Fname,RichTextBoxStreamType.RichText)'RTF文件
FExtName="rtf"
End
If
Me.Text=Fname+"-简单文件编辑器"'设置标题
End
IfRichTextBox1.Modified=False
'保存后把RichtextBox1.Modified属性值变为FalseStatusBar1.Panels(1).Text="已保存"
End
Sub说明:(1)请读者参考语句后的说明,体会“另存为对话框”控件各属性的含义。(2)该过程实现类似于“另存为…”菜单的功能。在保存文件且需要指定文件名的情况下可调用该过程。(3)本例调用了RichTextBox控件的SaveFile方法,使用了RichTextBox控件的Modified属性。RichTextBox是一种既可以输入文本、又可以编辑文本的文字处理控件,它在工具箱中的图标为“”。与TextBox控件相比,RichTextBox控件的文字处理功能更加丰富,不仅可以设定文字的颜色、字体,还具有字符串检索功能。另外,RichTextBox控件还可以打开、编辑和存储.rtf格式文件、ASCII文本格式文件及Unicode编码格式的文件。下面详细介绍一下该控件的常用属性和方法。①RichTextBox控件的常用属性前面介绍的TextBox控件所具有的属性,RichTextBox控件基本上都具有,除此之外,该控件还具有一些其它属性。RightMargin属性:用来设置或获取右侧空白的大小,单位是像素。通过该属性可以设置右侧空白,如希望右侧空白为50像素,可使用如下语句:RichTextBox1.RightMargin=RichTextBox1.Width-50;Rtf属性:该属性用来获取或设置
RichTextBox
控件中的文本,包括所有
RTF格式代码。可以使用此属性将
RTF格式文本放到控件中以进行显示,或提取控件中的RTF格式文本。此属性通常用于在RichTextBox控件和其它
RTF源(如
MicrosoftWord或
Windows写字板)之间交换信息。SelectedRtf属性:该属性用来获取或设置控件中当前选定的
RTF格式的格式文本。此属性使用户得以获取控件中的选定文本,包括
RTF格式代码。如果当前未选定任何文本,给该属性赋值,将把所赋的文本插入到插入点处。如果选定了文本,则给该属性所赋的文本值将替换掉选定文本。SelectionColor属性:该属性用来获取或设置当前选定文本或插入点处的文本颜色。SelectionFont属性:该属性用来获取或设置当前选定文本或插入点处文本的字体。②常用方法前面介绍的TextBox控件所具有的方法,RichTextBox控件基本上都具有,除此之外,该控件还具有一些其它方法。Redo方法该方法用来重做上次被撤消的操作。调用的一般格式如下:
RichTextBox对象.Redo()该方法无参数。Find方法该方法用来从RichTextBox控件中查找指定的字符串。经常使用的调用格式如下:[格式1]:RichTextBox对象.Find(str)[功能]:在指定的“RichTextBox”控件中查找文本,并返回搜索文本的第一个字符在控件内的位置。如果未找到搜索字符串或者str参数指定的搜索字符串为空,则返回值为-1。[格式2]:RichTextBox对象.Find(str,RichTextBoxFinds)[功能]:在“RichTextBox对象”指定的文本框中搜索
str
参数中指定的文本,并返回文本的第一个字符在控件内的位置。如果返回负值,则未找到所搜索的文本字符串。还可以使用此方法搜索特定格式的文本。参数RichTextBoxFinds指定如何在控件中执行文本搜索,其取值及其含义如表7-7所示。表7-7 RichTextBoxFinds参数的取值及含义成员名称说明MatchCase仅定位大小写正确的搜索文本的实例。NoHighlight如果找到搜索文本,不突出显示它。None定位搜索文本的所有实例,而不论是否为全字匹配。Reverse搜索在控件文档的结尾处开始,并搜索到文档的开头。WholeWord仅定位全字匹配的文本。[格式3]:RichTextBox对象.Find(str,start,RichTextBoxFinds)[功能]:此版本的
Find方法与前面的格式2基本类似,不同的只是通过设置搜索起始位置来缩小文本搜索范围,start参数表示开始搜索的位置。此功能使用户得以避开可能已搜索过的文本或已经知道不包含要搜索的特定文本的文本。如果在
options参数中指定了
RichTextBoxFinds.Reverse
值,则
start参数的值将指示反向搜索结束的位置,因为搜索是从文档底部开始的。SaveFile方法
该方法用来把RichTextBox中的信息保存到指定的文件中,调用格式有以下三种:[格式1]:RichTextBox对象名.SaveFile(文件名)[功能]:将
RichTextBox控件中的内容保存为RTF格式文件中。[格式2]:RichTextBox对象名.SaveFile(文件名,文件类型)[功能]:将
RichTextBox控件中的内容保存为“文件类型”指定的格式文件中。[格式3]:RichTextBox对象名.SaveFile(数据流,数据流类型)[功能]:将
RichTextBox控件中的内容保存为“数据流类型”指定的数据流类型文件中。其中,文件类型或数据流类型的取值及含义如表7-8所示。表7-8 文件类型或数据流类型的取值及含义取值含义RichTextBoxStreamType.PlainText纯文本流RichTextBoxStreamType.RichTextRTF格式流RichTextBoxStreamType.UnicodePlainText采用Unicode编码的文本流LoadFile方法使用LoadFile方法可以将文本文件、RTF文件装入RichTextBox控件。主要的调用格式有以下三种。[格式1]:RichTextBox对象名.LoadFile(文件名)[功能]:将
RTF格式文件或标准
ASCII文本文件加载到
RichTextBox
控件中。[格式2]:RichTextBox对象名.LoadFile(数据流,数据流类型)[功能]:将现有数据流的内容加载到
RichTextBox
控件中。[格式3]:RichTextBox对象名.LoadFile(文件名,文件类型)[功能]:将特定类型的文件加载到
RichTextBox
控件中。注意:文件类型和数据流格式见表7-8。25.编写一个名为“NotSaveProcess”的通用过程,代码如下。
Private
Sub
NotSaveProcess()'没有保存处理
IfRichTextBox1.ModifiedThen
'如果RichTextBox1中的文本被修改,则提示是否保存
If
MsgBox("尚未保存,是否保存?",MsgBoxStyle.YesNo,"保存提示")=_
MsgBoxResult.Yes
Then
'需要保存处理
If
Fname=""Then
'如果文件名为空,文件尚未命名,则是第一次保存
Call
SaveAs()'调用SaveAs过程
Else
'文件已经命名,已经保存过
If(FExtName="txt")Then
'如果是文本文件
'文本文件保存
RichTextBox1.SaveFile(Fname,RichTextBoxStreamType.PlainText)
Else
'RTF文件保存
RichTextBox1.SaveFile(Fname,RichTextBoxStreamType.RichText)
End
If
End
If
End
If
End
If
End
Sub说明:该过程首行测试文件是否被修改过,如果已经修改则提示是否保存,再根据用户的选择决定是否保存文件。为了防止对文件的修改丢失,可在“新建”、“打开”、“退出”等菜单命令执行时选择调用本过程,测试正在处理的文件是否被修改,如果被修改,让用户决定是否保存。26.编写一个名为“NewFile”的通用过程,代码如下。
Private
Sub
NewFile()
Call
NotSaveProcess()'调用过程NotSaveProcess实现没有保存处理
Fname=""'文件名为空
FExtName="txt"'文件的扩展名为空
RichTextBox1.Text=""'清空RichTextBox1中显示的文本
Me.Text="新建-简单文件编辑器"'设置标题
RichTextBox1.Modified=FalseStatusBar1.Panels(1).Text="已保存"
End
Sub说明:该过程在用户选择了“新建”菜单项,或单击了工具栏上的“新建”按钮时将被调用。27.在窗体的设计界面上,双击“文件[&F]”菜单中的“新建”菜单项,在出现的代码窗体中,编写该菜单项的事件过程代码,如下。
'“新建”菜单项
Private
SubMenuItem1_1_Click(ByValsenderAs
System.Object,ByValeAs
System.EventArgs)HandlesMenuItem1_1.Click
Call
NewFile()'调用NewFile过程
End
Sub说明:菜单项的常用事件主要有Click事件,该事件在用户单击菜单项时发生。28.运行程序,将会出现一个空白的输入区域,标题为“新建-简单文件编辑器”。在空白输入区域中输入任意字符。选择“文件”菜单中的“新建”菜单项,将会出现如图7-25所示的“保存提示”对话框。单击“是”按钮,将会出现如图7-26所示的“保存文件”对话框,该对话框是调用SaveFileDialog1控件的ShowDialog方法弹出的。在该对话框中用户可以选择或输入保存的文件类型、保存位置和保存的文件名。图7-25“保存提示”对话框图7-26“保存文件”对话框29.在工具箱中找到“打开文件”对话框控件(OpenFileDialog控件)图标“”,并为窗体添加一个OpenFileDialog控件。说明:OpenFileDialog控件又称“打开文件”对话框,主要用来弹出Windows中标准的打开文件对话框。30.编写一个名为“FileOpen”的通用过程,代码如下。
Private
Sub
FileOpen()
Call
NotSaveProcess()'调用过程NotSaveProcess实现没有保存的处理
'设置过滤器属性
OpenFileDialog1.Filter="文本文件(*.txt)|*.txt|RTF格式文件(*.RTF)|*.RTF"OpenFileDialog1.FilterIndex=1'设置当前文件过滤器
OpenFileDialog1.Title="打开文件"'设置对话框的标题
OpenFileDialog1.InitialDirectory=Application.StartupPath
'初始目录设为启动路径
OpenFileDialog1.RestoreDirectory=True
'自动恢复初始目录
OpenFileDialog1.ShowDialog()'弹出打开文件对话框
Fname=OpenFileDialog1.FileName'获取打开的文件名
If(Fname<>"")Then
'如果选择了文件
If(OpenFileDialog1.FilterIndex=1)Then
'如果是文本文件
RichTextBox1.LoadFile(Fname,RichTextBoxStreamType.PlainText)'文本文件
FExtName="txt"
ElseRichTextBox1.LoadFile(Fname,RichTextBoxStreamType.RichText)'RTF文件
FExtName="rtf"
End
If
End
If
Me.Text=Fname+"-简单文件编辑器"'设置标题
RichTextBox1.Modified=False
'文件刚打开时,把RichtextBox1.Modified属性值设为FalseStatusBar1.Panels(1).Text="已保存"
End
Sub说明:(1)该过程在用户选择了“打开”菜单项,或单击了工具栏上的“打开”按钮时将被调用。(2)上述代码中使用了OpenFileDialog控件的多个属性并调用了它的ShowDialog方法。下面将该控件的常用属性和方法作详细的介绍。①OpenFileDialog控件的常用属性Title属性:该属性用来获取或设置对话框标题,默认值为空字符串("")。如果标题为空字符串,则系统将使用默认标题“打开”。Filter属性:该属性用来获取或设置当前文件名筛选器字符串,该字符串决定对话框的【另存为文件类型】或【文件类型】框中出现的选择内容。对于每个筛选选项,筛选器字符串都包含筛选器说明、垂直线条(|)和筛选器模式。不同筛选选项的字符串由垂直线条隔开。下面是筛选器字符串的一个示例:“文本文件
(*.txt)|*.txt|所有文件
(*.*)|*.*”。还可以通过用分号来分隔各种文件类型,可以将多个筛选器模式添加到筛选器中。例如:“图像文件(*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF|所有文件
(*.*)|*.*”FilterIndex属性:该属性用来获取或设置文件对话框中当前选定筛选器的索引。第一个筛选器的索引为1,默认值为1。FileName属性:该属性用来获取在打开文件对话框中选定的文件名的字符串。文件名既包含文件路径也包含扩展名。如果未选定文件,该属性将返回空字符串("")。InitialDirectory属性:该属性用来获取或设置文件对话框显示的初始目录,默认值为空字符串("")。ShowReadOnly属性:该属性用来获取或设置一个值,该值指示对话框是否包含只读复选框。如果对话框包含只读复选框,则属性值为True,否则属性值为False。默认值为False。ReadOnlyChecked属性:该属性用来获取或设置一个值,该值指示是否选中只读复选框。如果选中了只读复选框,则属性值为True,反之属性值为False。默认值为False。Multiselect属性:该属性用来获取或设置一个值,该值指示对话框是否允许选择多个文件。如果对话框允许同时选定多个文件,则该属性值为True,反之属性值为False。默认值为False。FileNames属性:该属性用来获取对话框中所有选定文件的文件名。每个文件名都既包含文件路径又包含文件扩展名。如果未选定文件,该方法将返回空数组。RestoreDirectory属性:该属性用来获取或设置一个值,该值指示对话框在关闭前是否还原当前目录。假设用户在搜索文件的过程中更改了目录,且该属性值为True,那么,对话框会将当前目录还原为初始值,若该属性值为False,则不还原成初始值。默认值为False。②OpenFileDialog控件的常用方法常用方法有两个OpenFile和ShowDialog
方法,本节只介绍ShowDialog方法,该方法的作用是显示通用对话框,其一般调用形式如下:对话框控件名.ShowDialog()调用该方法后,将会出现对话框,如果用户单击对话框中的“确定”按钮,则返回值为DialogResult.OK;否则返回值为DialogResult.Cancel。其它对话框控件均具有ShowDialog方法,以后不再重复介绍。(3)SaveFileDialog控件也具有FileName、Filter、FilterIndex、InitialDirectory、Title等属性,这些属性的作用与OpenFileDialog对话框控件基本一致。(4)需注意的是:上述两个对话框只返回要打开或保存的文件名,并没有真正提供打开或保存文件的功能,程序员必须自己编写文件打开或保存程序,才能真正实现文件的打开和保存功能。31.编写“打开”菜单项的Click事件过程代码,如下。
'“打开”菜单项
Private
SubMenuItem1_2_Click(ByValsenderAs
System.Object,ByValeAs
System.EventArgs)HandlesMenuItem1_2.Click
Call
FileOpen()
End
Sub图7-27“打开文件”对话框32.执行程序,选择“文件”菜单中的“打开”菜单项,将会出现如图7-27所示的“打开文件”对话框,用户选择文件类型和文件名后,单击“打开”按钮,将把相应的文件打开并显示在编辑区域(RichTextBox1控件)中,并且文件名将显示在窗口的标题栏上。说明:“打开文件”对话框是调用OpenFileDialog的ShowDialog方法弹出的。33.编写一个名为“Save”的通用过程,代码如下。
Private
SubSave()'该函数实现保存功能
IfRichTextBox1.ModifiedThen
'如果RichTextBox1中的文本被修改,则要保存
If
Fname=""Then
'如果文件名为空,文件尚未命名,则是第一次保存
Call
SaveAs()'调用SaveAs过程
Else
'文件已经命名,已经保存过
If(FExtName="txt")Then
'如果是文本文件
'文本文件保存
RichTextBox1.SaveFile(Fname,RichTextBoxStreamType.PlainText)
Else
'RTF文件保存
RichTextBox1.SaveFile(Fname,RichTextBoxStreamType.RichText)
End
If
End
If
End
IfRichTextBox1.Modified=False
'保存后把RichtextBox1.Modified属性值变为FalseStatusBar1.Panels(1).Text="已保存"
End
Sub说明:(1)该过程首先判断Fname变量值是否为空,如果为空,则是第一次保存,调用SaveAs对话框弹出“保存文件”对话框供用户对文件进行命名。如果Fname变量值不为空,直接保存到该文件中即可。(2)在选择“文件”菜单中的“保存”菜单项时或单击工具栏上的“保存”按钮时将调用该过程。34.编写“保存”菜单项的Click事件过程代码,如下。
'“保存”菜单项
Private
SubMenuItem1_3_Click(ByValsenderAs
System.Object,ByValeAs
System.EventArgs)
HandlesMenuItem1_3.Click
CallSave()
End
Sub35.运行程序,输入文本后,选中“文件”菜单中的“保存”菜单项,将会出现“保存文件”对话框,让用户输入文件名并保存文件。然后打开一个文件,修改后直接选择“文件”菜单中的“保存”菜单项,会发现不会出现“保存文件”对话框,而是直接保存起来。36.编写“另存为”菜单项的Click事件过程代码,如下。
'“另存为”菜单项
Private
SubMenuItem1_4_Click(ByValsenderAs
System.Object,ByValeAs
System.EventArgs)
HandlesMenuItem1_4.Click
Call
SaveAs()
End
Sub37.运行程序,打开一个文件,选中“文件”菜单中的“另存为”菜单项,将会出现“保存文件”对话框,让用户输入另存为的文件名并保存文件。38.编写窗体的Load事件过程代码,如下。
Private
Sub
frmTextEditor_Load(ByValsenderAs
System.Object,ByValeAs
System.EventArgs)Handles
MyBase.Load
Call
RichTextBoxResize()'调用RichTextBoxResize过程
Fname=""
FExtName="txt"
Me.Text="新建-简单文件编辑器"MenuItem2_1.Enabled=False
'撤消菜单项不可用
MenuItem2_2.Enabled=False
'重做菜单项不可用
MenuItem2_3.Enabled=False
'剪切菜单项不可用
MenuItem2_4.Enabled=False
'复制菜单项不可用
MenuItem2_5.Enabled=False
'粘贴菜单项不可用
MenuItem3_4_1.Checked=True
'选中白色背景
RichTextBox1.BackColor=Color.White
'设置RichTextBox1的背景色为白色
'在状态栏上显示字符数
StatusBar1.Panels(0).Text()="字符数:"+CStr(RichTextBox1.TextLength)
'显示是否已保存信息
StatusBar1.Panels(1).Text="已保存"
End
Sub39.编写Timer1的Tick事件过程代码,如下。
'每隔500毫秒更新一次时间
Private
SubTimer1_Tick(ByValsenderAs
System.Object,ByValeAs
System.EventArgs)HandlesTimer1.TickStatusBar1.Panels(2).Text=DateTime.Now.ToString("T")'显示当前时间
End
Sub40.执行程序,会发现状态栏上显示出字符数、是否保存信息及当前时间。打开编辑菜单,会发现有多个菜单项是变灰的。41.编写窗体的Resize事件过程代码,如下。
Private
Sub
frmTextEditor_Resize(ByValsenderAs
Object,ByValeAs
System.EventArgs)Handles
MyBase.Resize
Call
RichTextBoxResize()'调用RichTextBoxResize过程
End
Sub42.运行程序,改变窗体的大小,会发现编辑区域也相应的改变大小。43.编写“退出”菜单项的Click事件过程代码,如下。
Private
SubMenuItem1_6_Click(ByValsenderAs
System.Object,ByValeAs
System.EventArgs)Handles
MenuItem1_6.Click
Call
NotSaveProcess()'调用过程NotSaveProcess实现没有保存的处理
Me.Close()'关闭窗体
Application.Exit()'退出应用程序
End
Sub44.运行程序,对“退出”菜单项功能进行测试。45.编写RichTextBox1控件的TextChanged事件过程代码,如下。
Private
SubRichTextBox1_TextChanged(ByValsenderAs
System.Object,ByValeAs
System.EventArgs)HandlesRichTextBox1.TextChanged
IfRichTextBox1.ModifiedThenStatusBar1.Panels(1).Text="未保存"
End
If
'在状态栏上显示字符数
StatusBar1.Panels(0).Text()="字符数:"+CStr(RichTextBox1.TextLength)
End
Sub46.运行程序,输入若干个字符后,观察状态栏上的变化。47.编写ToolBar1控件的ButtonClick事件过程代码,如下。
'工具栏按钮的Click事件代码
Private
SubToolBar1_ButtonClick(ByValsenderAs
System.Object,ByValeAs
System.Windows.Forms.ToolBarButtonClickEventArgs)HandlesToolBar1.ButtonClick
If
e.Button
IsToolBarButton1Then
'如果单击的是第一个按钮
Call
NewFile()
ElseIf
e.Button
IsToolBarButton2Then
'如果单击的是第二个按钮
Call
FileOpen()
ElseIf
e.Button
IsToolBarButton3Then
'如果单击的是第三个按钮
CallSave()
End
If
End
Sub48.运行程序,单击“工具栏”上的各按钮,看它们与相应的菜单命令的执行结果是否一样。49.编写
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度新能源行业销售人员2025年度劳动合同2篇
- 2025年住房公积金租房提取政策执行效果评估合同3篇
- 二零二五年度农村土地互换及农业科技创新协议书
- 二零二五年度农村房屋赠与合同附农业科技研发合作协议
- 二零二五年度医疗影像设备加工承揽合同3篇
- 二零二五年度公司租赁车辆驾驶人员考核及培训协议2篇
- 二零二五年度公司与自然人环保项目合作协议3篇
- 二零二五年度智能家电产品开发合作协议书2篇
- 2025年度网约货车司机兼职服务协议3篇
- 2025年度环保型机械研发与生产合作协议3篇
- 储能系统技术服务合同
- 电大西方行政学说
- 2024-2025学年人教版数学七年级上册期末复习卷(含答案)
- 2024年度中国PE、VC基金行业CFO白皮书
- 2023年南京市江宁区招聘教师考试真题
- 中南大学《物联网原理及应用》2022-2023学年第一学期期末试卷
- 第三方物流供应商准入与考核制度
- 基于Python的去哪儿网酒店数据采集与分析
- 2024年决战行测5000题言语理解与表达(培优b卷)
- 广东省深圳市2023-2024学年高一上学期期末考试物理试题(含答案)
- 自身免疫性脑炎护理常规
评论
0/150
提交评论