![VBNET程序設(shè)計(jì)實(shí)用教程7_第1頁(yè)](http://file4.renrendoc.com/view10/M02/2D/3E/wKhkGWWKHLmAAyneAAFwmJMlue8417.jpg)
![VBNET程序設(shè)計(jì)實(shí)用教程7_第2頁(yè)](http://file4.renrendoc.com/view10/M02/2D/3E/wKhkGWWKHLmAAyneAAFwmJMlue84172.jpg)
![VBNET程序設(shè)計(jì)實(shí)用教程7_第3頁(yè)](http://file4.renrendoc.com/view10/M02/2D/3E/wKhkGWWKHLmAAyneAAFwmJMlue84173.jpg)
![VBNET程序設(shè)計(jì)實(shí)用教程7_第4頁(yè)](http://file4.renrendoc.com/view10/M02/2D/3E/wKhkGWWKHLmAAyneAAFwmJMlue84174.jpg)
![VBNET程序設(shè)計(jì)實(shí)用教程7_第5頁(yè)](http://file4.renrendoc.com/view10/M02/2D/3E/wKhkGWWKHLmAAyneAAFwmJMlue84175.jpg)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
VB.NET程序設(shè)計(jì)實(shí)用教程第7章
Windows高級(jí)界面設(shè)計(jì)本章任務(wù):體育彩票搖獎(jiǎng)程序簡(jiǎn)易文本編輯器程序圖文瀏覽器程序計(jì)算機(jī)應(yīng)用教研室操作系統(tǒng)本章要點(diǎn)菜單的制作方法標(biāo)準(zhǔn)對(duì)話框的使用工具欄的制作方法多窗體應(yīng)用程序設(shè)計(jì)狀態(tài)欄的制作方法要點(diǎn)MDI應(yīng)用程序設(shè)計(jì)7.1任務(wù)7-1:體育彩票搖獎(jiǎng)程序——多窗體程序設(shè)計(jì)任務(wù)7-1描述:
編寫一個(gè)七位號(hào)碼體彩搖獎(jiǎng)程序,程序中有三個(gè)窗體,分別如圖7-1、圖7-2和圖7-3所示。程序運(yùn)行時(shí)首先出現(xiàn)搖獎(jiǎng)窗體,在該窗體上單擊“搖獎(jiǎng)”按鈕,將不停地產(chǎn)生隨機(jī)數(shù)并填充在七個(gè)文本框中,如圖7-4所示。單擊“停止”按鈕將停止搖獎(jiǎng),此時(shí)在文本框中顯示的數(shù)就是獲獎(jiǎng)號(hào)碼。單擊“公布”按鈕將公布獲獎(jiǎng)號(hào)碼,如圖7-5所示。在該窗體上單擊“返回”按鈕將返回到搖獎(jiǎng)窗體。單擊“退出”按鈕將出現(xiàn)如圖7-6所示的“退出提示框”,單擊“確定”按鈕將退出應(yīng)用程序。注意:在圖7-1所示的窗體中還有一個(gè)定時(shí)器控件。計(jì)算機(jī)應(yīng)用教研室操作系統(tǒng)
圖7-1
搖獎(jiǎng)窗體設(shè)計(jì)界面圖7-2
公布中獎(jiǎng)號(hào)碼窗體設(shè)計(jì)界面
圖7-3
“退出提示框”窗體設(shè)計(jì)界面圖7-4
搖獎(jiǎng)窗體運(yùn)行界面
圖7-5公布中獎(jiǎng)號(hào)碼窗體運(yùn)行界面圖7-6“退出提示框”窗體運(yùn)行界面1.啟動(dòng)VB.NET,新建一個(gè)項(xiàng)目,項(xiàng)目類型為“Windows應(yīng)用程序”,項(xiàng)目的存放位置為“D:\VBTASK\CH07”,項(xiàng)目名為“Task7_1”。2.把Form1窗體的Text屬性值設(shè)置為“體育彩票搖獎(jiǎng)程序”,把它的Name屬性值設(shè)置為“frmTicketReward”。單擊“解決方案資源管理器”中的“Form1.VB”窗體,然后在屬性窗口中把它文件名屬性設(shè)置為“frmTicketReward.vb”。然后執(zhí)行【項(xiàng)目】→【Task7_1屬性】命令,在出現(xiàn)的“Task7_1屬性頁(yè)”對(duì)話框中把“啟動(dòng)對(duì)象”設(shè)置為frmTicketReward”。注意:在多窗體程序設(shè)計(jì)中,如果要改變啟動(dòng)窗體,方法也是執(zhí)行【項(xiàng)目】→【***屬性】命令,在出現(xiàn)的“***屬性頁(yè)”對(duì)話框中把“啟動(dòng)對(duì)象”設(shè)置為相應(yīng)窗體即可。
任務(wù)實(shí)現(xiàn):控件名屬性名屬性值作用Label1Caption"號(hào)碼"提示TextBox1~TextBox7Text""顯示搖獎(jiǎng)號(hào)碼Button1Caption"搖獎(jiǎng)"單擊它開(kāi)始搖獎(jiǎng)Button2Caption"停止"單擊它停止搖獎(jiǎng)Button3Caption"公布"單擊它彈出公布獲獎(jiǎng)號(hào)碼窗體,公布中獎(jiǎng)號(hào)碼Button4Caption"退出"單擊它彈出“退出提示框”提示是否退出程序Timer1EnabledIntervalFalse200每隔150毫秒產(chǎn)生一組號(hào)碼3.對(duì)照?qǐng)D7-1搖獎(jiǎng)窗體設(shè)計(jì)界面,為窗體添加控件并設(shè)置控件的屬性。控件的屬性設(shè)置如表7-1所示。
表7-1任務(wù)7-1中的frmTicketReward窗體中的控件屬性設(shè)置及其功能計(jì)算機(jī)應(yīng)用教研室操作系統(tǒng)4.單擊工具欄上的“”按鈕或執(zhí)行【項(xiàng)目】→【添加Windows窗體】命令,將會(huì)出現(xiàn)如圖7-7所示的【添加新項(xiàng)】對(duì)話框。5.在該對(duì)話框的“模板”下面的列表框中選中【W(wǎng)indows窗體】圖標(biāo),在名稱后面的文本框中輸入窗體名“frmTicketPublish”,然后單擊“打開(kāi)”按鈕,即為應(yīng)用程序添加了一個(gè)名為“frmTicketPublish”窗體。把該窗體的Text屬性值設(shè)置為“中獎(jiǎng)號(hào)碼公布”。注意:也可以選添加窗體,然后再修改其Name屬性值。圖7-7
“添加新項(xiàng)”對(duì)話框控件名屬性名屬性值作用Label1Caption"本期獲獎(jiǎng)號(hào)碼如下:"提示TextBox1~TextBox7Text""顯示中獎(jiǎng)號(hào)碼Button1Caption"返回"返回到搖獎(jiǎng)窗體6.對(duì)照?qǐng)D7-2公布獲獎(jiǎng)號(hào)碼窗體設(shè)計(jì)界面,為窗體添加控件并設(shè)置控件的屬性。控件的屬性設(shè)置如表7-2所示。7.采用與步驟4和步驟5同樣的方法為項(xiàng)目再添加一個(gè)名為“frmExit”的窗體,并把它的Text屬性值設(shè)置為“退出提示框”。表7-2
任務(wù)7-1中的frmTicketPublish窗體中的控件屬性設(shè)置及其功能對(duì)象名屬性名屬性值說(shuō)明Label1Text"真的要退出應(yīng)用程序嗎?"提示信息Button1TextDialogResult"確定"OK單擊它將退出應(yīng)用程序Button2TextDialogResult"取消"Cancel單擊它將不退出應(yīng)用程序8.對(duì)照?qǐng)D7-3退出提示框窗體設(shè)計(jì)界面,為窗體添加控件并設(shè)置控件的屬性。控件的屬性設(shè)置如表7-3所示。然后再把該窗體的FormBorderStyle屬性值設(shè)置為“FixedSingle”,把AcceptButton屬性值設(shè)置為“Button1”把CancelButton屬性值設(shè)置為“Button2”。至此界面設(shè)計(jì)基本完成。表7-3
任務(wù)7-1中的frmExit窗體中的控件屬性設(shè)置及其功能9.在“解決方案資源管理器”中雙擊“frmTicketReward”窗體,并切換到“frmTicketReward”窗體的代碼窗口,在代碼窗口的最頂部加上如下程序代碼。ImportsTask7_1.frmTicketPublishImportsTask7_1.frmExit注意:在多窗體程序設(shè)計(jì)中,每個(gè)窗體相當(dāng)于一個(gè)類,在一個(gè)窗體中要調(diào)用其它窗體,必須通過(guò)Imports語(yǔ)句把該窗體作為命名空間引入進(jìn)來(lái)。10.在“
”下面編寫如下程序代碼,定義7個(gè)全局公享的整型變量,用來(lái)存放中獎(jiǎng)號(hào)碼。PublicShareda1,a2,a3,a4,a5,a6,a7AsInteger'存放搖出來(lái)的中獎(jiǎng)號(hào)碼注意:必須是在窗體的“Declaration”部分用“PublicShared”定義的變量才能被其它窗體使用。11.編寫本窗體的Load事件過(guò)程代碼,如下。
Private
Sub
frmTicketReward_Load(ByValsenderAs
System.Object,
ByValeAs
System.EventArgs)Handles
MyBase.LoadRandomize()'隨機(jī)數(shù)初始化
End
Sub12.編寫B(tài)utton1按鈕的Click事件過(guò)程代碼,如下。
Private
SubButton1_Click(ByValsenderAs
System.Object,ByVal
eAs
System.EventArgs)HandlesButton1.ClickTimer1.Enabled=True
'啟動(dòng)定時(shí)器,開(kāi)始搖號(hào)
Button2.Enabled=True
'停止按鈕可用
Button1.Enabled=False
'搖獎(jiǎng)按鈕不可用
End
Sub13.編寫Timer1控件的Tick事件過(guò)程代碼,如下。
Private
SubTimer1_Tick(ByValsenderAs
System.Object,ByValeAs
System.EventArgs)HandlesTimer1.Tick
'產(chǎn)生七位隨機(jī)數(shù)作為中獎(jiǎng)號(hào)碼
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'最后一位是特別號(hào),只能在1~5之間
'顯示隨機(jī)產(chǎn)生的七位號(hào)碼
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說(shuō)明:該過(guò)程每隔200毫秒執(zhí)行一個(gè),產(chǎn)生7個(gè)隨機(jī)數(shù)并顯示在文本框中,產(chǎn)生搖獎(jiǎng)的效果。14.運(yùn)行程序,單擊“搖獎(jiǎng)”按鈕,會(huì)發(fā)現(xiàn)各個(gè)文本框中不停地出現(xiàn)隨機(jī)數(shù)。15.編寫B(tài)utton2按鈕的Click事件過(guò)程代碼,如下。
Private
SubButton2_Click(ByValsenderAs
System.Object,ByVal
eAsSystem.EventArgs)HandlesButton2.ClickTimer1.Enabled=False
'關(guān)閉定時(shí)器,結(jié)束搖號(hào)
Button3.Enabled=True
'公布按鈕可用
Button2.Enabled=False
'停止按鈕不可用
End
Sub16.運(yùn)行程序,單擊“搖獎(jiǎng)”按鈕搖獎(jiǎng)后,單擊“停止”按鈕,會(huì)發(fā)現(xiàn)文本框中的數(shù)固定了下來(lái),此時(shí)的值就可以認(rèn)為是中獎(jiǎng)號(hào)碼。17.編寫B(tài)utton3按鈕的Click事件過(guò)程代碼,如下。
Private
SubButton3_Click(ByValsenderAs
System.Object,ByVal
eAs
System.EventArgs)HandlesButton3.Click
Dim
Frm
As
New
frmTicketPublish
'定義一個(gè)frmTicketPublish類的對(duì)象
Frm.Show()'顯示該對(duì)象,窗體將顯示出來(lái)
End
Sub18.編寫B(tài)utton4按鈕的Click事件過(guò)程代碼,如下。
Private
SubButton4_Click(ByValsenderAs
System.Object,ByVal
eAs
System.EventArgs)HandlesButton4.Click
Dim
frmExitDialog
As
New
frmExit
'根據(jù)退出窗體生成對(duì)象
If
frmExitDialog.ShowDialog()=DialogResult.OK
Then
'如果單擊了“確定”按鈕,則退出
Me.Close()'關(guān)閉本窗體
Application.Exit()'退出應(yīng)用程序
End
If
End
Sub說(shuō)明:(1)上述代碼首先產(chǎn)生一個(gè)frmExit窗體的實(shí)例,然后調(diào)用該窗體實(shí)例的ShowDialog方法把該窗體實(shí)例以對(duì)話框的形式顯示出來(lái),如果用戶在對(duì)話框中單擊了“是”按鈕,則退出應(yīng)用程序。(2)在VB.NET中,除了可以使用Windows自帶的標(biāo)準(zhǔn)對(duì)話框外,如MsgBox、InputBox等,用戶還可以把自己設(shè)計(jì)的窗體定義成對(duì)話框。使用自定義對(duì)話框有以下幾個(gè)要點(diǎn)。①將窗體的FormBorderStyle屬性值設(shè)置為FixedDialog;②根據(jù)需要向窗體上添加控件;③使用窗體的ShowDialog方法顯示窗體,即顯示出對(duì)話框。19.運(yùn)行程序,單擊“退出”按鈕,將會(huì)出現(xiàn)如圖7-6所示的對(duì)話框,單擊“是”按鈕退出應(yīng)用程序。20.在“解決方案資源管理器”中雙擊“frmTicketPublish”窗體并切換到該窗體,在所有代碼之前,加上如下代碼。ImportsTask7_1.frmTicketReward21.編寫“frmTicketPublish”窗體的Load事件過(guò)程代碼,如下。
Private
Sub
frmTicketPublish_Load(ByValsenderAs
System.Object,
ByValeAs
System.EventArgs)Handles
MyBase.Load
'把中獎(jiǎng)號(hào)碼顯示在各文本框中
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說(shuō)明:在窗體中可以訪問(wèn)被引入的其他窗體中定義的全局共享變量。22.為該窗體的“關(guān)閉”按鈕編寫Click事件過(guò)程代碼,如下。
Private
SubButton1_Click(ByValsenderAs
System.Object,ByVal
eAs
System.EventArgs)HandlesButton1.Click
Me.Close()'關(guān)閉本窗體
End
Sub23.運(yùn)行程序,單擊“搖獎(jiǎng)”按鈕進(jìn)行搖獎(jiǎng),單擊“停止”按鈕產(chǎn)生中獎(jiǎng)號(hào)碼,單擊“公布”按鈕將會(huì)出現(xiàn)如圖7-5所示的“中獎(jiǎng)號(hào)碼公布”窗口,單擊“關(guān)閉”按鈕將加到“搖獎(jiǎng)”窗口。24.保存項(xiàng)目,至此本任務(wù)全部完成。歸納說(shuō)明:Windows應(yīng)用程序很少只由一個(gè)窗體組成,一般情況下一個(gè)應(yīng)用程序均擁有很多個(gè)窗體。VB.NET項(xiàng)目剛建立時(shí)只有一個(gè)名為Form1的窗體,要建立多窗體應(yīng)用程序應(yīng)首先為項(xiàng)目添加窗體。在VB.NET中還可以任意指定其他窗體為啟動(dòng)窗體。本任務(wù)通過(guò)體育彩票搖獎(jiǎng)程序的實(shí)現(xiàn)過(guò)程,講解了多窗體程序設(shè)計(jì)的方法與注意事項(xiàng)。7.2任務(wù)7-2:簡(jiǎn)易文本編輯器程序——豐富格式文本框、菜單、對(duì)話框、工具欄、狀態(tài)欄等的應(yīng)用
任務(wù)7-2描述:編寫一個(gè)簡(jiǎn)易文本編輯器程序,要求通過(guò)菜單能夠?qū)崿F(xiàn)文件的新建、打開(kāi)、保存、另存為、退出等文件或應(yīng)用程序操作功能,能夠?qū)崿F(xiàn)撤消、重做、剪切、復(fù)制、粘貼、刪除、全選等編輯操作功能,能夠?qū)崿F(xiàn)設(shè)置文本的字體、顏色、背景色等格式操作功能。對(duì)于常用的功能還要通過(guò)工具欄實(shí)現(xiàn),還應(yīng)具有狀態(tài)欄對(duì)當(dāng)前的狀態(tài)進(jìn)行提示。程序的設(shè)計(jì)界面如圖7-10所示,程序的運(yùn)行界面如圖7-11所示。圖7-10程序設(shè)計(jì)界面
圖7-11程序運(yùn)行界面任務(wù)分析:本任務(wù)涉及到菜單、工具欄、狀態(tài)欄等多種控件,中間涉及到多種編程技巧,分析起來(lái)較困難,將在講解的過(guò)程中一步一步地加上詳細(xì)分析。任務(wù)實(shí)現(xiàn):1.啟動(dòng)VB.NET,新建一個(gè)項(xiàng)目,項(xiàng)目類型為“Windows應(yīng)用程序”,項(xiàng)目的存放位置為“D:\VBTASK\CH07”,項(xiàng)目名為“Task7_2”。2.把Form1窗體的Text屬性值設(shè)置為“簡(jiǎn)易文本編輯器”,把它的Name屬性值設(shè)置為“frmTextEditor”。單擊“解決方案資源管理器”中的“Form1.VB”窗體,然后在屬性窗口中把它文件名屬性設(shè)置為“frmTextEditor.vb”。然后執(zhí)行【項(xiàng)目】→【Task7_2屬性】命令,在出現(xiàn)的“Task7_2屬性頁(yè)”對(duì)話框中把“啟動(dòng)對(duì)象”設(shè)置為“frmTextEditor”。3.在工具箱上找到MainMenu(主菜單)控件圖標(biāo)“”,并把該控件添加到窗體上,標(biāo)題欄下將出現(xiàn)菜單欄,如圖7-12所示。圖7-12添加了MainMenu控件后出現(xiàn)的菜單欄
圖7-13在菜單欄中輸入了“文件[&F]”菜單項(xiàng)4.在“請(qǐng)?jiān)诖颂庉斎搿蔽淖稚蠁螕?,然后輸入文字“文件[&F]”,如圖7-13所示。然后在屬性窗體中把該菜單項(xiàng)的名稱設(shè)置為“MenuItem1”。5.在“文件[F]”下面的“請(qǐng)?jiān)诖颂庉斎搿蔽淖稚蠁螕?,輸入文字“新建[&N]”,然后在屬性窗口中把Name屬性值設(shè)置為MenuItem1_1,在屬性窗口中選中Shortcut屬性,單擊其后的向下箭頭按鈕,在出現(xiàn)的列表中選擇快捷鍵“CtrlN”,如圖7-14所示。
圖7-14為“文件[&F]”菜單輸入了“新建[&N]”菜單項(xiàng)圖7-15設(shè)計(jì)好的“文件”菜單6.使用同樣的方法,為“文件[F]”菜單再添加5個(gè)菜單項(xiàng),菜單項(xiàng)的標(biāo)題文字、名稱、快捷鍵如表7-4所示。設(shè)置好的文件菜單如圖7-15所示。表7-4“文件”菜單中的其它菜單項(xiàng)及其屬性設(shè)置菜單標(biāo)題文字(Text屬性值)菜單項(xiàng)名(Name屬性值)快捷鍵(ShortCut屬性值)打開(kāi)[&O]...MenuItem1_2CtrlO保存[S]MenuItem1_3CtrlS另存為[A]...MenuItem1_4None-MenuItem1_5None退出[&X]MenuItem1_6CtrlX說(shuō)明:菜單項(xiàng)的常用屬性如下:(1)Text屬性:該屬性用來(lái)獲取或設(shè)置一個(gè)值,通過(guò)該值顯示菜單項(xiàng)標(biāo)題。當(dāng)使用Text屬性為菜單項(xiàng)指定標(biāo)題時(shí),還可以在字符前加一個(gè)“&”號(hào)來(lái)指定熱鍵(訪問(wèn)鍵,即加下劃線的字母)。例如,若要將“File”中的“F”指定為訪問(wèn)鍵,應(yīng)將菜單項(xiàng)的標(biāo)題指定為“&File”。(2)Checked屬性:該屬性用來(lái)獲取或設(shè)置一個(gè)值,通過(guò)該值指示選中標(biāo)記是否出現(xiàn)在菜單項(xiàng)文本的旁邊。如果要放置選中標(biāo)記在菜單項(xiàng)文本的旁邊,屬性值為True,否則屬性值為False。默認(rèn)值為False。(3)DefaultItem屬性:該屬性用來(lái)獲取或設(shè)置一個(gè)值,通過(guò)該值指示菜單項(xiàng)是否為默認(rèn)菜單項(xiàng)。值為True時(shí),是默認(rèn)菜單項(xiàng),值為False時(shí),不是默認(rèn)菜單項(xiàng)。菜單的默認(rèn)菜單項(xiàng)以粗體的形式顯示。當(dāng)用戶雙擊包含默認(rèn)項(xiàng)的子菜單后,默認(rèn)項(xiàng)被選定,然后子菜單關(guān)閉。(4)Enabled屬性:該屬性用來(lái)獲取或設(shè)置一個(gè)值,通過(guò)該值指示菜單項(xiàng)是否可用。值為True時(shí)表示可用,值為False時(shí)表示當(dāng)前禁止使用。(5)RadioCheck屬性:該屬性用來(lái)獲取或設(shè)置一個(gè)值,通過(guò)該值指示選中的菜單項(xiàng)的左邊是顯示單選按鈕還是選中標(biāo)記。值為True時(shí)將顯示單選按鈕標(biāo)記,值為False時(shí)顯示選中標(biāo)記。(6)Shortcut屬性:該屬性用來(lái)獲取或設(shè)置一個(gè)值,該值指示與菜單項(xiàng)相關(guān)聯(lián)的快捷鍵。(7)ShowShortcut屬性:獲取或設(shè)置一個(gè)值,該值指示與菜單項(xiàng)關(guān)聯(lián)的快捷鍵是否在菜單項(xiàng)標(biāo)題的旁邊顯示。如果快捷組合鍵在菜單項(xiàng)標(biāo)題的旁邊顯示,該屬性值True,如果不顯示快捷鍵,該屬性值為False。默認(rèn)值為True。(8)MdiList屬性:該屬性用來(lái)獲取或設(shè)置一個(gè)值,通過(guò)該值指示是否用在關(guān)聯(lián)窗體內(nèi)顯示的多文檔界面(MDI)子窗口列表來(lái)填充菜單項(xiàng)。若要在該菜單項(xiàng)中顯示MDI子窗口列表,則設(shè)置該屬性值為True,否則設(shè)置該屬性的值為False。默認(rèn)值False。7.單擊“文件[F]”右邊的“請(qǐng)?jiān)诖颂庉斎搿?,輸入“編輯[&E]”形成編輯菜單,在屬性窗口設(shè)置“編輯”菜單的名稱為“MenuItem2”。再為“編輯”菜單輸入7個(gè)菜單項(xiàng),菜單項(xiàng)的標(biāo)題文字、名稱、快捷鍵如表7-5所示。設(shè)置好的文件菜單如圖7-16所示。表7-5“編輯”菜單中的菜單項(xiàng)及其屬性設(shè)置菜單標(biāo)題文字(Text屬性值)菜單項(xiàng)名(Name屬性值)快捷鍵(ShortCut屬性值)撤消[U]MenuItem2_1CtrlZ重做[R]MenuItem2_2CtrlY剪切[T]MenuItem2_3CtrlX復(fù)制[C]MenuItem2_4CtrlC粘貼[P]MenuItem2_5CtrlP刪除[D]MenuItem2_6全選[A]MenuItem2_7CtrlA圖7-16設(shè)計(jì)好的“編輯”菜單圖7-17設(shè)計(jì)好了的“格式”菜單8.采用類似的方法設(shè)計(jì)格式菜單,設(shè)計(jì)好的格式菜單如圖7-17所示,各菜單項(xiàng)及其屬性設(shè)置如表7-6所示。表7-6“格式”菜單中的菜單項(xiàng)及其屬性設(shè)置菜單標(biāo)題文字(Text屬性值)菜單項(xiàng)名(Name屬性值)快捷鍵(ShortCut屬性值)格式[&O]MenuItem3None字體[&F]...MenuItem3_1None顏色[C]...MenuItem3_2None-MenuItem3_3None背景MenuItem3_4None白色背景MenuItem3_4_1None灰色背景MenuItem3_4_2None注意:還需把“MenuItem3_4_1”菜單項(xiàng)的RadioCheck屬性值設(shè)置為True,把它的Checked屬性值設(shè)置為True。把“MenuItem3_4_2”菜單項(xiàng)的RadioCheck屬性值設(shè)置為False。9.在工具箱中找到工具欄圖標(biāo)“”,并為窗體添加一個(gè)ToolBar控件(工具欄控件),控件名稱為ToolBar1,如圖7-18所示。圖7-18添加的工具欄控件說(shuō)明:對(duì)讀者來(lái)說(shuō),工具欄并不陌生,如Word中的常用工具欄、格式工具欄等。工具欄是由一系列的圖標(biāo)按鈕組成,形象化的圖標(biāo)與功能的對(duì)應(yīng),使應(yīng)用程序界面具有更好的交互性。在VB.NET中,要實(shí)現(xiàn)工具欄,需要使用兩個(gè)控件:ImageList控件和ToolBar控件。10.在工具箱中找到圖像列表控件圖標(biāo)“
”,并向窗體上添加一個(gè)ImageList控件(圖像列表控件),控件名為ImageList1。11.用鼠標(biāo)單擊ImageList1控件,然后在“屬性”窗口中選中“Images”屬性,單擊其后的“…”按鈕,將會(huì)出現(xiàn)如圖7-19所示的“Image集合編輯器”對(duì)話框。12.單擊“添加”按鈕,將會(huì)出現(xiàn)“打開(kāi)”文件對(duì)話框,在該對(duì)話框中定義要添加到工具欄上的按鈕圖片文件,然后按“打開(kāi)”按鈕,反復(fù)操作直到需要的圖形文件全部添加到“Image集合編輯器”的成員列表中,如圖7-20所示(添加了“新建”、“打開(kāi)”、“保存”三個(gè)操作的按鈕圖片)。然后按“確定”按鈕關(guān)閉“Image集合編輯器”對(duì)話框。圖7-19“Image集合編輯器”對(duì)話框圖7-20添加了圖片文件后的“Image集合編輯器”對(duì)話框13.單擊ToolBar1工具欄控件,設(shè)置它的ImageList屬性值為“ImageList1”。然后再在“屬性”窗口中單擊“Buttons”屬性后面的“…”按鈕,將會(huì)出現(xiàn)“ToolBarButton集合編輯器”對(duì)話框。14.在該窗口中單擊“添加”按鈕,將會(huì)出現(xiàn)第一個(gè)按鈕,并且在窗口的右邊將出現(xiàn)該按鈕的屬性設(shè)置窗口,通過(guò)設(shè)置ImageIndex屬性可以指定在按鈕上顯示的圖片文件。圖7-21是添加了三個(gè)按鈕后的“ToolBarButton集合編輯器”對(duì)話框。圖7-21添加了三個(gè)工具欄按鈕后的“ToolBarButton集合編輯器”對(duì)話框15.單擊“確定”按鈕,關(guān)閉“ToolBarButton集合編輯器”對(duì)話框。設(shè)計(jì)好的工具欄如圖7-22所示。圖7-22設(shè)計(jì)好了的工具欄16.在工具箱中找到狀態(tài)欄圖標(biāo)“”,并為窗體添加一個(gè)StatusBar控件(狀態(tài)欄控件),控件名稱為StatusBar1。說(shuō)明:狀態(tài)欄一般位于應(yīng)用程序窗口的下面,用來(lái)顯示程序的狀態(tài)。17.選中StatusBar1控件,在“屬性”窗口中選中Panel屬性,單擊其后的“…”按鈕,打開(kāi)“StatusBarPanel集合編輯器”對(duì)話框,在該編輯器中通過(guò)單擊“添加”按鈕為StatusBar添加三個(gè)面板,如圖7-23所示。注意可以在該窗口的右邊設(shè)置每個(gè)面板的屬性,如Name等。圖7-23添加了三個(gè)Panel面板的“StatusBarPanel集合編輯器”對(duì)話框18.單擊“確定”按鈕返回程序設(shè)計(jì)界面,選中StatusBar控件,把它的ShowPanels屬性值設(shè)置為True。設(shè)計(jì)好的狀態(tài)欄如圖7-24所示。圖7-24設(shè)計(jì)好的狀態(tài)欄19.由于要在狀態(tài)欄的某一Panel中顯示當(dāng)前時(shí)間,為實(shí)現(xiàn)該功能可添加一個(gè)Timer控件,設(shè)置該控件的Interval屬性值為500,Enabled屬性值為True。20.在工具箱中找到豐富格式文本框圖標(biāo)“”,并為窗體添加一個(gè)RichTextBox控件(豐富格式文本框控件),控件名稱為RichTextBox1,控件位置任意,在運(yùn)行時(shí)由程序自動(dòng)設(shè)置成充滿除工具欄和狀態(tài)欄外的所有窗體部分。至此界面設(shè)計(jì)基本完成,設(shè)計(jì)好的界面如圖7-10所示(沒(méi)有對(duì)話框控件)。21.為窗體添加兩個(gè)模塊級(jí)變量,代碼如下。
Dim
Fname
As
String
‘存放正在編輯的文件名,如果新建的文件尚末保存,則值為空串
Dim
FExtName
As
String
'擴(kuò)展名22.編寫一個(gè)名為“RichTextBoxResize”的通用過(guò)程,其作用是使豐富格式文本框充滿除工具欄和狀態(tài)欄外的所有空間。該過(guò)程在窗體加載時(shí)和改變大小時(shí)被調(diào)用。
'該過(guò)程使豐富格式文本框充滿除工具欄和狀態(tài)欄外的所有空間
Private
Sub
RichTextBoxResize()
'設(shè)置豐富格式文本框的起始位置為工具欄下面的最左上角
RichTextBox1.Top=ToolBar1.HeightRichTextBox1.Left=0
'設(shè)置豐富格式文本框的寬度與窗體的用戶區(qū)寬度一樣
RichTextBox1.Width=Me.ClientSize.Width
‘設(shè)置豐富格式文本框的高度為窗體用戶區(qū)高度減去工具欄的高及狀態(tài)欄的高度
RichTextBox1.Height=Me.ClientSize.Height-ToolBar1.Height–StatusBar1.Height
End
Sub23.在工具箱中找到“保存文件”對(duì)話框控件的圖標(biāo)“”,為窗體添加一個(gè)SaveFileDialog控件,該控件主要用來(lái)彈出Windows中標(biāo)準(zhǔn)的“保存文件”對(duì)話框。24.編寫一個(gè)名為“SaveAs”的通用過(guò)程,代碼如下。
該過(guò)程彈出“另存為”對(duì)話框,供用戶選擇或輸入要保存的文件名,并把RichTextBox1中的文本保存到該文件中去
Private
Sub
SaveAs()SaveFileDialog1.Filter="文本文件(*.txt)|*.txt|RTF格式文件(*.RTF)|*.RTF"SaveFileDialog1.FilterIndex=1'設(shè)置當(dāng)前文件過(guò)程器
SaveFileDialog1.Title="保存文件"'設(shè)置對(duì)話框的標(biāo)題
SaveFileDialog1.InitialDirectory=Application.StartupPath
'初始目錄設(shè)為啟動(dòng)路徑
SaveFileDialog1.RestoreDirectory=True
'自動(dòng)恢復(fù)初始目錄
SaveFileDialog1.ShowDialog()'彈出另存為對(duì)話框
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+"-簡(jiǎn)單文件編輯器"'設(shè)置標(biāo)題
End
IfRichTextBox1.Modified=False
'保存后把RichtextBox1.Modified屬性值變?yōu)镕alseStatusBar1.Panels(1).Text="已保存"
End
Sub說(shuō)明:(1)請(qǐng)讀者參考語(yǔ)句后的說(shuō)明,體會(huì)“另存為對(duì)話框”控件各屬性的含義。(2)該過(guò)程實(shí)現(xiàn)類似于“另存為…”菜單的功能。在保存文件且需要指定文件名的情況下可調(diào)用該過(guò)程。(3)本例調(diào)用了RichTextBox控件的SaveFile方法,使用了RichTextBox控件的Modified屬性。RichTextBox是一種既可以輸入文本、又可以編輯文本的文字處理控件,它在工具箱中的圖標(biāo)為“”。與TextBox控件相比,RichTextBox控件的文字處理功能更加豐富,不僅可以設(shè)定文字的顏色、字體,還具有字符串檢索功能。另外,RichTextBox控件還可以打開(kāi)、編輯和存儲(chǔ).rtf格式文件、ASCII文本格式文件及Unicode編碼格式的文件。下面詳細(xì)介紹一下該控件的常用屬性和方法。①RichTextBox控件的常用屬性前面介紹的TextBox控件所具有的屬性,RichTextBox控件基本上都具有,除此之外,該控件還具有一些其它屬性。RightMargin屬性:用來(lái)設(shè)置或獲取右側(cè)空白的大小,單位是像素。通過(guò)該屬性可以設(shè)置右側(cè)空白,如希望右側(cè)空白為50像素,可使用如下語(yǔ)句:RichTextBox1.RightMargin=RichTextBox1.Width-50;Rtf屬性:該屬性用來(lái)獲取或設(shè)置
RichTextBox
控件中的文本,包括所有
RTF格式代碼。可以使用此屬性將
RTF格式文本放到控件中以進(jìn)行顯示,或提取控件中的RTF格式文本。此屬性通常用于在RichTextBox控件和其它
RTF源(如
MicrosoftWord或
Windows寫字板)之間交換信息。SelectedRtf屬性:該屬性用來(lái)獲取或設(shè)置控件中當(dāng)前選定的
RTF格式的格式文本。此屬性使用戶得以獲取控件中的選定文本,包括
RTF格式代碼。如果當(dāng)前未選定任何文本,給該屬性賦值,將把所賦的文本插入到插入點(diǎn)處。如果選定了文本,則給該屬性所賦的文本值將替換掉選定文本。SelectionColor屬性:該屬性用來(lái)獲取或設(shè)置當(dāng)前選定文本或插入點(diǎn)處的文本顏色。SelectionFont屬性:該屬性用來(lái)獲取或設(shè)置當(dāng)前選定文本或插入點(diǎn)處文本的字體。②常用方法前面介紹的TextBox控件所具有的方法,RichTextBox控件基本上都具有,除此之外,該控件還具有一些其它方法。Redo方法該方法用來(lái)重做上次被撤消的操作。調(diào)用的一般格式如下:
RichTextBox對(duì)象.Redo()該方法無(wú)參數(shù)。Find方法該方法用來(lái)從RichTextBox控件中查找指定的字符串。經(jīng)常使用的調(diào)用格式如下:[格式1]:RichTextBox對(duì)象.Find(str)[功能]:在指定的“RichTextBox”控件中查找文本,并返回搜索文本的第一個(gè)字符在控件內(nèi)的位置。如果未找到搜索字符串或者str參數(shù)指定的搜索字符串為空,則返回值為-1。[格式2]:RichTextBox對(duì)象.Find(str,RichTextBoxFinds)[功能]:在“RichTextBox對(duì)象”指定的文本框中搜索
str
參數(shù)中指定的文本,并返回文本的第一個(gè)字符在控件內(nèi)的位置。如果返回負(fù)值,則未找到所搜索的文本字符串。還可以使用此方法搜索特定格式的文本。參數(shù)RichTextBoxFinds指定如何在控件中執(zhí)行文本搜索,其取值及其含義如表7-7所示。表7-7 RichTextBoxFinds參數(shù)的取值及含義成員名稱說(shuō)明MatchCase僅定位大小寫正確的搜索文本的實(shí)例。NoHighlight如果找到搜索文本,不突出顯示它。None定位搜索文本的所有實(shí)例,而不論是否為全字匹配。Reverse搜索在控件文檔的結(jié)尾處開(kāi)始,并搜索到文檔的開(kāi)頭。WholeWord僅定位全字匹配的文本。[格式3]:RichTextBox對(duì)象.Find(str,start,RichTextBoxFinds)[功能]:此版本的
Find方法與前面的格式2基本類似,不同的只是通過(guò)設(shè)置搜索起始位置來(lái)縮小文本搜索范圍,start參數(shù)表示開(kāi)始搜索的位置。此功能使用戶得以避開(kāi)可能已搜索過(guò)的文本或已經(jīng)知道不包含要搜索的特定文本的文本。如果在
options參數(shù)中指定了
RichTextBoxFinds.Reverse
值,則
start參數(shù)的值將指示反向搜索結(jié)束的位置,因?yàn)樗阉魇菑奈臋n底部開(kāi)始的。SaveFile方法
該方法用來(lái)把RichTextBox中的信息保存到指定的文件中,調(diào)用格式有以下三種:[格式1]:RichTextBox對(duì)象名.SaveFile(文件名)[功能]:將
RichTextBox控件中的內(nèi)容保存為RTF格式文件中。[格式2]:RichTextBox對(duì)象名.SaveFile(文件名,文件類型)[功能]:將
RichTextBox控件中的內(nèi)容保存為“文件類型”指定的格式文件中。[格式3]:RichTextBox對(duì)象名.SaveFile(數(shù)據(jù)流,數(shù)據(jù)流類型)[功能]:將
RichTextBox控件中的內(nèi)容保存為“數(shù)據(jù)流類型”指定的數(shù)據(jù)流類型文件中。其中,文件類型或數(shù)據(jù)流類型的取值及含義如表7-8所示。表7-8 文件類型或數(shù)據(jù)流類型的取值及含義取值含義RichTextBoxStreamType.PlainText純文本流RichTextBoxStreamType.RichTextRTF格式流RichTextBoxStreamType.UnicodePlainText采用Unicode編碼的文本流LoadFile方法使用LoadFile方法可以將文本文件、RTF文件裝入RichTextBox控件。主要的調(diào)用格式有以下三種。[格式1]:RichTextBox對(duì)象名.LoadFile(文件名)[功能]:將
RTF格式文件或標(biāo)準(zhǔn)
ASCII文本文件加載到
RichTextBox
控件中。[格式2]:RichTextBox對(duì)象名.LoadFile(數(shù)據(jù)流,數(shù)據(jù)流類型)[功能]:將現(xiàn)有數(shù)據(jù)流的內(nèi)容加載到
RichTextBox
控件中。[格式3]:RichTextBox對(duì)象名.LoadFile(文件名,文件類型)[功能]:將特定類型的文件加載到
RichTextBox
控件中。注意:文件類型和數(shù)據(jù)流格式見(jiàn)表7-8。25.編寫一個(gè)名為“NotSaveProcess”的通用過(guò)程,代碼如下。
Private
Sub
NotSaveProcess()'沒(méi)有保存處理
IfRichTextBox1.ModifiedThen
'如果RichTextBox1中的文本被修改,則提示是否保存
If
MsgBox("尚未保存,是否保存?",MsgBoxStyle.YesNo,"保存提示")=_
MsgBoxResult.Yes
Then
'需要保存處理
If
Fname=""Then
'如果文件名為空,文件尚未命名,則是第一次保存
Call
SaveAs()'調(diào)用SaveAs過(guò)程
Else
'文件已經(jīng)命名,已經(jīng)保存過(guò)
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說(shuō)明:該過(guò)程首行測(cè)試文件是否被修改過(guò),如果已經(jīng)修改則提示是否保存,再根據(jù)用戶的選擇決定是否保存文件。為了防止對(duì)文件的修改丟失,可在“新建”、“打開(kāi)”、“退出”等菜單命令執(zhí)行時(shí)選擇調(diào)用本過(guò)程,測(cè)試正在處理的文件是否被修改,如果被修改,讓用戶決定是否保存。26.編寫一個(gè)名為“NewFile”的通用過(guò)程,代碼如下。
Private
Sub
NewFile()
Call
NotSaveProcess()'調(diào)用過(guò)程N(yùn)otSaveProcess實(shí)現(xiàn)沒(méi)有保存處理
Fname=""'文件名為空
FExtName="txt"'文件的擴(kuò)展名為空
RichTextBox1.Text=""'清空RichTextBox1中顯示的文本
Me.Text="新建-簡(jiǎn)單文件編輯器"'設(shè)置標(biāo)題
RichTextBox1.Modified=FalseStatusBar1.Panels(1).Text="已保存"
End
Sub說(shuō)明:該過(guò)程在用戶選擇了“新建”菜單項(xiàng),或單擊了工具欄上的“新建”按鈕時(shí)將被調(diào)用。27.在窗體的設(shè)計(jì)界面上,雙擊“文件[&F]”菜單中的“新建”菜單項(xiàng),在出現(xiàn)的代碼窗體中,編寫該菜單項(xiàng)的事件過(guò)程代碼,如下。
'“新建”菜單項(xiàng)
Private
SubMenuItem1_1_Click(ByValsenderAs
System.Object,ByValeAs
System.EventArgs)HandlesMenuItem1_1.Click
Call
NewFile()'調(diào)用NewFile過(guò)程
End
Sub說(shuō)明:菜單項(xiàng)的常用事件主要有Click事件,該事件在用戶單擊菜單項(xiàng)時(shí)發(fā)生。28.運(yùn)行程序,將會(huì)出現(xiàn)一個(gè)空白的輸入?yún)^(qū)域,標(biāo)題為“新建-簡(jiǎn)單文件編輯器”。在空白輸入?yún)^(qū)域中輸入任意字符。選擇“文件”菜單中的“新建”菜單項(xiàng),將會(huì)出現(xiàn)如圖7-25所示的“保存提示”對(duì)話框。單擊“是”按鈕,將會(huì)出現(xiàn)如圖7-26所示的“保存文件”對(duì)話框,該對(duì)話框是調(diào)用SaveFileDialog1控件的ShowDialog方法彈出的。在該對(duì)話框中用戶可以選擇或輸入保存的文件類型、保存位置和保存的文件名。圖7-25“保存提示”對(duì)話框圖7-26“保存文件”對(duì)話框29.在工具箱中找到“打開(kāi)文件”對(duì)話框控件(OpenFileDialog控件)圖標(biāo)“”,并為窗體添加一個(gè)OpenFileDialog控件。說(shuō)明:OpenFileDialog控件又稱“打開(kāi)文件”對(duì)話框,主要用來(lái)彈出Windows中標(biāo)準(zhǔn)的打開(kāi)文件對(duì)話框。30.編寫一個(gè)名為“FileOpen”的通用過(guò)程,代碼如下。
Private
Sub
FileOpen()
Call
NotSaveProcess()'調(diào)用過(guò)程N(yùn)otSaveProcess實(shí)現(xiàn)沒(méi)有保存的處理
'設(shè)置過(guò)濾器屬性
OpenFileDialog1.Filter="文本文件(*.txt)|*.txt|RTF格式文件(*.RTF)|*.RTF"OpenFileDialog1.FilterIndex=1'設(shè)置當(dāng)前文件過(guò)濾器
OpenFileDialog1.Title="打開(kāi)文件"'設(shè)置對(duì)話框的標(biāo)題
OpenFileDialog1.InitialDirectory=Application.StartupPath
'初始目錄設(shè)為啟動(dòng)路徑
OpenFileDialog1.RestoreDirectory=True
'自動(dòng)恢復(fù)初始目錄
OpenFileDialog1.ShowDialog()'彈出打開(kāi)文件對(duì)話框
Fname=OpenFileDialog1.FileName'獲取打開(kāi)的文件名
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+"-簡(jiǎn)單文件編輯器"'設(shè)置標(biāo)題
RichTextBox1.Modified=False
'文件剛打開(kāi)時(shí),把RichtextBox1.Modified屬性值設(shè)為FalseStatusBar1.Panels(1).Text="已保存"
End
Sub說(shuō)明:(1)該過(guò)程在用戶選擇了“打開(kāi)”菜單項(xiàng),或單擊了工具欄上的“打開(kāi)”按鈕時(shí)將被調(diào)用。(2)上述代碼中使用了OpenFileDialog控件的多個(gè)屬性并調(diào)用了它的ShowDialog方法。下面將該控件的常用屬性和方法作詳細(xì)的介紹。①OpenFileDialog控件的常用屬性Title屬性:該屬性用來(lái)獲取或設(shè)置對(duì)話框標(biāo)題,默認(rèn)值為空字符串("")。如果標(biāo)題為空字符串,則系統(tǒng)將使用默認(rèn)標(biāo)題“打開(kāi)”。Filter屬性:該屬性用來(lái)獲取或設(shè)置當(dāng)前文件名篩選器字符串,該字符串決定對(duì)話框的【另存為文件類型】或【文件類型】框中出現(xiàn)的選擇內(nèi)容。對(duì)于每個(gè)篩選選項(xiàng),篩選器字符串都包含篩選器說(shuō)明、垂直線條(|)和篩選器模式。不同篩選選項(xiàng)的字符串由垂直線條隔開(kāi)。下面是篩選器字符串的一個(gè)示例:“文本文件
(*.txt)|*.txt|所有文件
(*.*)|*.*”。還可以通過(guò)用分號(hào)來(lái)分隔各種文件類型,可以將多個(gè)篩選器模式添加到篩選器中。例如:“圖像文件(*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF|所有文件
(*.*)|*.*”FilterIndex屬性:該屬性用來(lái)獲取或設(shè)置文件對(duì)話框中當(dāng)前選定篩選器的索引。第一個(gè)篩選器的索引為1,默認(rèn)值為1。FileName屬性:該屬性用來(lái)獲取在打開(kāi)文件對(duì)話框中選定的文件名的字符串。文件名既包含文件路徑也包含擴(kuò)展名。如果未選定文件,該屬性將返回空字符串("")。InitialDirectory屬性:該屬性用來(lái)獲取或設(shè)置文件對(duì)話框顯示的初始目錄,默認(rèn)值為空字符串("")。ShowReadOnly屬性:該屬性用來(lái)獲取或設(shè)置一個(gè)值,該值指示對(duì)話框是否包含只讀復(fù)選框。如果對(duì)話框包含只讀復(fù)選框,則屬性值為True,否則屬性值為False。默認(rèn)值為False。ReadOnlyChecked屬性:該屬性用來(lái)獲取或設(shè)置一個(gè)值,該值指示是否選中只讀復(fù)選框。如果選中了只讀復(fù)選框,則屬性值為True,反之屬性值為False。默認(rèn)值為False。Multiselect屬性:該屬性用來(lái)獲取或設(shè)置一個(gè)值,該值指示對(duì)話框是否允許選擇多個(gè)文件。如果對(duì)話框允許同時(shí)選定多個(gè)文件,則該屬性值為True,反之屬性值為False。默認(rèn)值為False。FileNames屬性:該屬性用來(lái)獲取對(duì)話框中所有選定文件的文件名。每個(gè)文件名都既包含文件路徑又包含文件擴(kuò)展名。如果未選定文件,該方法將返回空數(shù)組。RestoreDirectory屬性:該屬性用來(lái)獲取或設(shè)置一個(gè)值,該值指示對(duì)話框在關(guān)閉前是否還原當(dāng)前目錄。假設(shè)用戶在搜索文件的過(guò)程中更改了目錄,且該屬性值為True,那么,對(duì)話框會(huì)將當(dāng)前目錄還原為初始值,若該屬性值為False,則不還原成初始值。默認(rèn)值為False。②OpenFileDialog控件的常用方法常用方法有兩個(gè)OpenFile和ShowDialog
方法,本節(jié)只介紹ShowDialog方法,該方法的作用是顯示通用對(duì)話框,其一般調(diào)用形式如下:對(duì)話框控件名.ShowDialog()調(diào)用該方法后,將會(huì)出現(xiàn)對(duì)話框,如果用戶單擊對(duì)話框中的“確定”按鈕,則返回值為DialogResult.OK;否則返回值為DialogResult.Cancel。其它對(duì)話框控件均具有ShowDialog方法,以后不再重復(fù)介紹。(3)SaveFileDialog控件也具有FileName、Filter、FilterIndex、InitialDirectory、Title等屬性,這些屬性的作用與OpenFileDialog對(duì)話框控件基本一致。(4)需注意的是:上述兩個(gè)對(duì)話框只返回要打開(kāi)或保存的文件名,并沒(méi)有真正提供打開(kāi)或保存文件的功能,程序員必須自己編寫文件打開(kāi)或保存程序,才能真正實(shí)現(xiàn)文件的打開(kāi)和保存功能。31.編寫“打開(kāi)”菜單項(xiàng)的Click事件過(guò)程代碼,如下。
'“打開(kāi)”菜單項(xiàng)
Private
SubMenuItem1_2_Click(ByValsenderAs
System.Object,ByValeAs
System.EventArgs)HandlesMenuItem1_2.Click
Call
FileOpen()
End
Sub圖7-27“打開(kāi)文件”對(duì)話框32.執(zhí)行程序,選擇“文件”菜單中的“打開(kāi)”菜單項(xiàng),將會(huì)出現(xiàn)如圖7-27所示的“打開(kāi)文件”對(duì)話框,用戶選擇文件類型和文件名后,單擊“打開(kāi)”按鈕,將把相應(yīng)的文件打開(kāi)并顯示在編輯區(qū)域(RichTextBox1控件)中,并且文件名將顯示在窗口的標(biāo)題欄上。說(shuō)明:“打開(kāi)文件”對(duì)話框是調(diào)用OpenFileDialog的ShowDialog方法彈出的。33.編寫一個(gè)名為“Save”的通用過(guò)程,代碼如下。
Private
SubSave()'該函數(shù)實(shí)現(xiàn)保存功能
IfRichTextBox1.ModifiedThen
'如果RichTextBox1中的文本被修改,則要保存
If
Fname=""Then
'如果文件名為空,文件尚未命名,則是第一次保存
Call
SaveAs()'調(diào)用SaveAs過(guò)程
Else
'文件已經(jīng)命名,已經(jīng)保存過(guò)
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屬性值變?yōu)镕alseStatusBar1.Panels(1).Text="已保存"
End
Sub說(shuō)明:(1)該過(guò)程首先判斷Fname變量值是否為空,如果為空,則是第一次保存,調(diào)用SaveAs對(duì)話框彈出“保存文件”對(duì)話框供用戶對(duì)文件進(jìn)行命名。如果Fname變量值不為空,直接保存到該文件中即可。(2)在選擇“文件”菜單中的“保存”菜單項(xiàng)時(shí)或單擊工具欄上的“保存”按鈕時(shí)將調(diào)用該過(guò)程。34.編寫“保存”菜單項(xiàng)的Click事件過(guò)程代碼,如下。
'“保存”菜單項(xiàng)
Private
SubMenuItem1_3_Click(ByValsenderAs
System.Object,ByValeAs
System.EventArgs)
HandlesMenuItem1_3.Click
CallSave()
End
Sub35.運(yùn)行程序,輸入文本后,選中“文件”菜單中的“保存”菜單項(xiàng),將會(huì)出現(xiàn)“保存文件”對(duì)話框,讓用戶輸入文件名并保存文件。然后打開(kāi)一個(gè)文件,修改后直接選擇“文件”菜單中的“保存”菜單項(xiàng),會(huì)發(fā)現(xiàn)不會(huì)出現(xiàn)“保存文件”對(duì)話框,而是直接保存起來(lái)。36.編寫“另存為”菜單項(xiàng)的Click事件過(guò)程代碼,如下。
'“另存為”菜單項(xiàng)
Private
SubMenuItem1_4_Click(ByValsenderAs
System.Object,ByValeAs
System.EventArgs)
HandlesMenuItem1_4.Click
Call
SaveAs()
End
Sub37.運(yùn)行程序,打開(kāi)一個(gè)文件,選中“文件”菜單中的“另存為”菜單項(xiàng),將會(huì)出現(xiàn)“保存文件”對(duì)話框,讓用戶輸入另存為的文件名并保存文件。38.編寫窗體的Load事件過(guò)程代碼,如下。
Private
Sub
frmTextEditor_Load(ByValsenderAs
System.Object,ByValeAs
System.EventArgs)Handles
MyBase.Load
Call
RichTextBoxResize()'調(diào)用RichTextBoxResize過(guò)程
Fname=""
FExtName="txt"
Me.Text="新建-簡(jiǎn)單文件編輯器"MenuItem2_1.Enabled=False
'撤消菜單項(xiàng)不可用
MenuItem2_2.Enabled=False
'重做菜單項(xiàng)不可用
MenuItem2_3.Enabled=False
'剪切菜單項(xiàng)不可用
MenuItem2_4.Enabled=False
'復(fù)制菜單項(xiàng)不可用
MenuItem2_5.Enabled=False
'粘貼菜單項(xiàng)不可用
MenuItem3_4_1.Checked=True
'選中白色背景
RichTextBox1.BackColor=Color.White
'設(shè)置RichTextBox1的背景色為白色
'在狀態(tài)欄上顯示字符數(shù)
StatusBar1.Panels(0).Text()="字符數(shù):"+CStr(RichTextBox1.TextLength)
'顯示是否已保存信息
StatusBar1.Panels(1).Text="已保存"
End
Sub39.編寫Timer1的Tick事件過(guò)程代碼,如下。
'每隔500毫秒更新一次時(shí)間
Private
SubTimer1_Tick(ByValsenderAs
System.Object,ByValeAs
System.EventArgs)HandlesTimer1.TickStatusBar1.Panels(2).Text=DateTime.Now.ToString("T")'顯示當(dāng)前時(shí)間
End
Sub40.執(zhí)行程序,會(huì)發(fā)現(xiàn)狀態(tài)欄上顯示出字符數(shù)、是否保存信息及當(dāng)前時(shí)間。打開(kāi)編輯菜單,會(huì)發(fā)現(xiàn)有多個(gè)菜單項(xiàng)是變灰的。41.編寫窗體的Resize事件過(guò)程代碼,如下。
Private
Sub
frmTextEditor_Resize(ByValsenderAs
Object,ByValeAs
System.EventArgs)Handles
MyBase.Resize
Call
RichTextBoxResize()'調(diào)用RichTextBoxResize過(guò)程
End
Sub42.運(yùn)行程序,改變窗體的大小,會(huì)發(fā)現(xiàn)編輯區(qū)域也相應(yīng)的改變大小。43.編寫“退出”菜單項(xiàng)的Click事件過(guò)程代碼,如下。
Private
SubMenuItem1_6_Click(ByValsenderAs
System.Object,ByValeAs
System.EventArgs)Handles
MenuItem1_6.Click
Call
NotSaveProcess()'調(diào)用過(guò)程N(yùn)otSaveProcess實(shí)現(xiàn)沒(méi)有保存的處理
Me.Close()'關(guān)閉窗體
Application.Exit()'退出應(yīng)用程序
End
Sub44.運(yùn)行程序,對(duì)“退出”菜單項(xiàng)功能進(jìn)行測(cè)試。45.編寫RichTextBox1控件的TextChanged事件過(guò)程代碼,如下。
Private
SubRichTextBox1_TextChanged(ByValsenderAs
System.Object,ByValeAs
System.EventArgs)HandlesRichTextBox1.TextChanged
IfRichTextBox1.ModifiedThenStatusBar1.Panels(1).Text="未保存"
End
If
'在狀態(tài)欄上顯示字符數(shù)
StatusBar1.Panels(0).Text()="字符數(shù):"+CStr(RichTextBox1.TextLength)
End
Sub46.運(yùn)行程序,輸入若干個(gè)字符后,觀察狀態(tài)欄上的變化。47.編寫ToolBar1控件的ButtonClick事件過(guò)程代碼,如下。
'工具欄按鈕的Click事件代碼
Private
SubToolBar1_ButtonClick(ByValsenderAs
System.Object,ByValeAs
System.Windows.Forms.ToolBarButtonClickEventArgs)HandlesToolBar1.ButtonClick
If
e.Button
IsToolBarButton1Then
'如果單擊的是第一個(gè)按鈕
Call
NewFile()
ElseIf
e.Button
IsToolBarButton2Then
'如果單擊的是第二個(gè)按鈕
Call
FileOpen()
ElseIf
e.Button
IsToolBarButton3Then
'如果單擊的是第三個(gè)按鈕
CallSave()
End
If
End
Sub48.運(yùn)行程序,單擊“工具欄”上的各按鈕,看它們與相應(yīng)的菜單命令的執(zhí)行結(jié)果是否一樣。49.編寫
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- N-Nitroso-clonidine-生命科學(xué)試劑-MCE-2307
- IRF1-IN-1-生命科學(xué)試劑-MCE-6527
- 二零二五年度文化場(chǎng)館消毒防疫服務(wù)合同
- 二零二五年度電動(dòng)助力車租賃與充電樁安裝合同
- 2025年度房屋買賣合同變更及產(chǎn)權(quán)過(guò)戶補(bǔ)充協(xié)議
- 2025年度理發(fā)店入股與客戶滿意度提升合作協(xié)議
- 施工現(xiàn)場(chǎng)施工防塌陷制度
- 施工單位關(guān)于施工設(shè)備的工作聯(lián)系函
- 綠色校園教學(xué)樓電氣節(jié)能與環(huán)保方案
- 食堂的應(yīng)急預(yù)案
- GB/T 44143-2024科技人才評(píng)價(jià)規(guī)范
- 對(duì)醫(yī)院領(lǐng)導(dǎo)的批評(píng)意見(jiàn)怎么寫更合適范文(6篇)
- 賬期協(xié)議書賬期合同書
- 2024年常德職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)完整
- 天津市河?xùn)|區(qū)2023-2024學(xué)年九年級(jí)上學(xué)期期末數(shù)學(xué)試題
- 工程防滲漏培訓(xùn)課件
- 黑龍江省哈爾濱市2024年數(shù)學(xué)八年級(jí)下冊(cè)期末經(jīng)典試題含解析
- 牛津3000核心詞匯表注釋加音標(biāo)1-4 完整版
- 高中英語(yǔ)以讀促寫教學(xué)策略與實(shí)踐研究課件
- 金屬表面處理中的冷噴涂技術(shù)
- 河北省石家莊市2023-2024學(xué)年高一上學(xué)期期末教學(xué)質(zhì)量檢測(cè)化學(xué)試題(解析版)
評(píng)論
0/150
提交評(píng)論