Microsoft Word - ch doc

Similar documents
Microsoft Word - ch doc

星星排列 _for loop Protected Sub Page_Load(ByVal sender As Object, ByVal e As Dim h As Integer = 7 'h 為變數 ' Dim i, j As Integer For i = 1 To h

Ch6 Visual Basic表單,功能表與模組

untitled

第 4 章 表單與程式設計

Microsoft PowerPoint - vb_net4

0 0 = 1 0 = 0 1 = = 1 1 = 0 0 = 1

VB程序设计教程

投影片 1

任務二 : 產生 20 個有炸彈的磚塊, 放在隨機的位置編輯 Block 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) Write a description of class

Visual Basic D 3D

ch02

05855BB03.indd

ActiveX Control

840 提示 Excel - Excel -- Excel (=) Excel ch0.xlsx H5 =D5+E5+F5+G5 (=) = - Excel 00

Microsoft PowerPoint - 第14章.ppt

IsPostBack 2

Microsoft Word - ch05.doc

投影片 1

Microsoft PowerPoint - 08_IOInterface.pptx

Microsoft Word - GUI design.doc

Microsoft PowerPoint - VB14.ppt

輕鬆學 Dreamweaver CS5 網頁設計..\Example\Ch0\ \.html..\example\ch0\ \mouse.txt..\example\ch0\ \ _Ok.html 學習重點 JavaScript 複製程式碼 mouse.txt Ctrl+C Ctrl+C 0-4

PowerPoint Presentation

PowerPoint Presentation

Visual C# 2005程式設計

國立台北商業技術學院附設空中商業專科進修學校

2 WF 1 T I P WF WF WF WF WF WF WF WF 2.1 WF WF WF WF WF WF

Microsoft PowerPoint - 07_WinProg.pptx

untitled

untitled

¥¼©R¦W-3

untitled

untitled

1 1 Excel VBA 說明 ( ) (_) STEP4 Excel 2 STEP5 A1 1 B2 2 C3 3 STEP6 A1 STEP7 > > 1-11

Microsoft PowerPoint - 11_EventHandle.pptx

Microsoft PowerPoint - VB5

VB控件教程大全

輕鬆學 PhotoImpact X3 1 / / / 3 0 RGB 12,255,255 小常識 3 056

Visual C# 2005程式設計

Chapter 16 集合

Microsoft PowerPoint - P766Ch09.ppt

第 6 章 我的程式會轉彎

MVB-1001.DOC

Microsoft Word - AEL CH07

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new

CU0594.pdf

Web Form 表單與事件處理

穨文件1

Microsoft Word - ch06.doc

PowerPoint Presentation

untitled

contents 1 4 Chapter 2 Chapter 5 Chapter 管理自動儲存的版本 以文件復原窗格復原檔案 自訂快速工具 自訂快速存取工具列 自訂功能區

Microsoft PowerPoint - 09_事件驅動.ppt

第1章

<img>

CC213

Microsoft Word - ACI chapter00-1ed.docx

untitled

TPM BIOS Infineon TPM Smart TPM Infineon TPM Smart TPM TPM Smart TPM TPM Advanced Mode...8

Microsoft PowerPoint - Chapter5

Microsoft PowerPoint - vb.net2.ppt

Microsoft Word - 小心翼翼的二十一點N.doc

The golden pins of the PCI card can be oxidized after months or years


Microsoft Word - 02.doc

Microsoft PowerPoint - 09_CommonComponents.pptx

1-6 Access 2016 實力養成暨評量解題秘笈 102. 書籍與作者 Step1 按 建立 索引標籤 資料表 群組的 資料表設計 按鈕 Step2 由上而下分別建立下列欄位並設定資料類型 : 欄位名稱 : ID, 資料類型 : 自動編號 欄位名稱 : BName, 資料類型 :

Microsoft PowerPoint - asp07.ppt

Microsoft PowerPoint - ASP_NET_04

單步除錯 (1/10) 打開 Android Studio, 點選 Start a new Android Studio project 建立專案 Application name 輸入 BMI 點下 Next 2 P a g e

Microsoft PowerPoint - EmbSys101_Java Basics.ppt [相容模式]

3 Driver do Microsoft Access (*.mdb) hisdata IFIX 1.4

Microsoft PowerPoint _cp09_繪圖功能與文字.pptx

PowerPoint Presentation

<4D F736F F D D342DA57CA7DEA447B14D2DA475B57BBB50BADEB27AC3FEB14DA447B8D5C344>

投影片 1

關於本書 l 3 PhoneGap Appcelerator Titanium Sencha Touch (wrapper framework) Native App PhoneGap Build Native App Hybrid App Java Objective-C Android SDK

Photoshop CS3 影像創造力 基礎講堂 8 學習流程 學習重要性 學習難度 必學指令工具 實作應用範例 創造舞台燈光的漸層繪圖 延伸學習 雜訊與半透明漸層 8-1 Photoshop Photoshop 8 136

AutoCAD 用戶如何使用 ArchiCAD

投影片 1


Ch2 Visual Basic 基礎

E-Form Word

APA Preliminaries Text Reference 1. Cover Page 2. Title Page 3. Signature Page 4. Advisor s recommendation letter 5. Approval page 6. Copyri

穨ac3-3.PDF

SMM667.mps

PowerPoint Presentation

Microsoft PowerPoint - VB3

2

untitled

6-2 計算機概論 COMPUTERS 6-1 Windows 7 功能簡介 Windows Windows XP Windows Vista Aero Shake Windows Aero Windows Aero Microsoft 半透明效果 Aero Peek 透視 Wi

馬孝先

ACI pdf

Chapter 3 Camera Raw Step negative clarity +25 ] P / Step 4 0 ( 下一頁 ) Camera Raw Chapter 3 089

Microsoft PowerPoint - chap03.ppt

Microsoft PowerPoint - OPVB1基本VB.ppt

05224AA11.indd

Transcription:

CHAPTER 基本輸出入介面設計 學習表單物件常見的屬性 學習表單物件常用的事件程序 學習 Label 標籤控制項的使用 學習 Button 按鈕控制項的使用 學習 TextBox 文字方塊控制項的使用 學習如何將文字作格式化輸出 學習使用 InputBox 函式接受資料輸入 學習使用 MsgBox 函式與 MsgBox 敘述輸出提示

Visual Basic 基礎必修課.1 表單物件常見的屬性 前面章節已介紹過建立輸出入介面是設計 Window Form 應用程式時的首要工作, 由於 Window 視窗作業系統具有高親和力和統一的圖形化輸出入操作介面 在 Windows 下的視窗 VB 稱為表單 (Form), 就是在 VS2017 的 IDE 整合開發環境下, 透過工具箱提供的工具類別, 可在表單上不用寫程式便能快速地將工具拖曳到表單上建立輸出入介面 所以表單相當於一個容器, 允許將工具箱的工具安置其中, 做為使用者的操作介面 我們將表單以及由工具箱的工具類別拖曳到表單上的工具稱為控制項 (Conrol) 或物件 (Object) 每個表單和控制項都有其所屬的屬性和方法, 至於表單或控制項可能擁有相同的屬性, 也可能只有表單或該控制項所獨有, 每個屬性皆賦予預設值, 可依程式需求來加以修改 透過屬性值的改變使得同類別的表單或控制項, 擁有不同的外觀和功能 至於如何更改表單或控制項的屬性, 可在程式設計階段透過屬性視窗來設定 另一方式是在程式執行階段由程式碼來設定 由於表單是一個很重要的物件, 本節先介紹有關表單常用的屬性和方法, 熟悉表單的使用, 對學習後面章節介紹的控制項時有事半功倍之效 現就再進入 IDE 整合開發環境, 執行 檔案 (F)/ 新增專案 (P) 指令新增一個 Windows Form 應用程式的專案, 此時所開啟 IDE 整合開發環境的右下方會出現屬性視窗 若屬性視窗未出現, 執行功能表 檢視 (V)/ 屬性視窗 (W) 功能開啟屬性視窗 屬性視窗 至於在表單設計階段是透過屬性視窗, 在屬性視窗內先選取表單或控制項, 接著再修改對應的屬性內容, 其操作要領如下 : -2

基本輸出入介面設計 1. 開啟屬性視窗有下列方式 : 在欲修改的表單或控制項上按壓滑鼠右鍵, 由快顯功能表選取 屬性 (R) 功能開啟屬性視窗 執行功能表 檢視 (V)/ 屬性視窗 (W) 開啟屬性視窗 按快捷鍵 F4 可直接開啟屬性視窗 2. 查詢或更改屬性視窗內的屬性有兩種方式, 依個人習慣擇一 : 分類鈕 : 屬性按照外觀 行為 其他 協助工具 配置等類型來分類排列 字母鈕 : 屬性會按照屬性的英文名稱 A-Z 順序排列 字母鈕分類鈕 物件清單下拉鈕 工具列按鈕 展開鈕 合攏鈕 屬性名稱 屬性功能說明 預設屬性值. 拖曳屬性視窗的垂直捲軸選取欲修改的屬性 4. 被選取的屬性內容右邊可能會出現下列情形 : 若是下拉鈕 : 顯示下拉式清單供您選取 若是按鈕 : 會出現對話方塊供您選取 若出現插入點游標則直接輸入資料 本節先以分類的方式來介紹表單物件常見的屬性以及在設計階段設定屬性的方法 在後面的章節中, 介紹過的屬性若在其他控制項中亦擁有時, 除非該屬性在該控制項另有特別用法, 則不再贅述 -

Visual Basic 基礎必修課.1.1 外觀類型的屬性 屬性名稱 BackColor 預設值為 Control 說明 設定表單工作區的背景顏色 [ 例 ] 將表單的背景色設為黃色, 寫法 : BackColor = Color.Yellow 屬性名稱 屬性值 BackgroundImage 預設值為無 Cursor 預設值為 Default 設定表單工作區的背景圖片 [ 例 ] 以 C:\ch0 資料夾的 Image1.jpg 圖片檔當表單的背景圖, 寫法 : BackgroundImage=Image.FromFile ("c:\ch0\image1.jpg") 設定當程式執行時, 表單上滑鼠指標的形狀 [ 例 ] 將滑鼠指標形狀設為手指, 寫法 : Cursor = Cursors.Hand Font 預設值新細明體,9pt Text 預設值為 Form1 FormBorderStyle 預設值 Sizable 設定表單上顯示文字的字型種類 大小 樣式和效果 設定時會出現字型對話方塊 [ 例 ] 將表單內顯示的文字大小設為 10 字體為標楷體 粗體字, 寫法 : Font = New Font (" 標楷體 ",10,FontStyle.Bold) 字型種類大小字型樣式 設定表單標題欄上面的關聯文字 [ 例 ] 將表單標題欄由預設的 Form1 設為 " 第一個程式 ": Text = " 第一個程式 " 設定表單邊界樣式, 執行時才會看到設定的結果 : None( 沒有框線 ) FixedSingle( 單線固定 ) FixedD( 立體固定 ) FixedDialog( 雙線固定對話方塊 ) Sizable( 大小可調整 ) FixedToolWindow( 單線固定工具視窗 ) SizableToolWindow( 可調整工具視窗 ) [ 例 ] 將表單邊界樣式設為立體固定, 寫法如下 : FormBorderStyle = Windows.Forms.FormBorderStyle.FixedD 下面以設定表單的 Text 標題關聯文字屬性值為例, 學習如何在表單設計模式透過屬性視窗來設定屬性的方法 將表單標題欄上的關聯文字設為 VB 2017 在表單上空白處按一下, 則表單的右側 右下與下方各出現一個小方框, 此動作將表單設為 作用表單 -4

基本輸出入介面設計 到屬性視窗工具列按分類鈕, 使屬性按照 外觀 行為 其他 等類型來分類排列 操作捲動鈕直到 外觀 類型的屬性出現 再點按 Text 屬性 2 捲動鈕 1 4 點按 Text 屬性值欄, 將關聯文字由預設值 Form1 改為 VB 2017 結果表單標題欄的關聯文字改成 VB 2017 5 如何設定表單的背景圖片, 背景圖片存於書附光碟 ch0\image.bmp 1. 選取表單, 再到屬性視窗點選 BackgroudImage 屬性 2. 按該屬性值欄的鈕開啟 選取資源 對話方塊. 在 選取資源 對話方塊中, 到 資源內容 框架內點, 再按鈕開啟 開啟 對話方塊 -5

Visual Basic 基礎必修課 4. 在 開啟 對話方塊中, 點選書附光碟 [ch0/image.bmp] 圖片檔, 按鈕, 返回 選取資源 對話方塊 5 返回 選取資源 對話方塊後, 觀察圖片預覽區的內容, 按鈕 6. 結果表單內的背景圖呈現所選取的圖片內容 注意 選取本選項, 不會將圖檔加到方案資料夾, 拷貝程式時必須另外將 圖檔和其資料夾路徑一起拷貝 選取本選項, 自動將圖檔加入到方案資料夾下的 Resource 資料夾內, 拷貝 時不用再拷貝圖檔和其資料夾路徑.1.2 視窗樣式的屬性 屬性名稱 ControlBox 預設值為 True HelpButton 預設值為 False Icon 預設值為 MaximizeBox 預設值為 True MinimizeBox 預設值為 True ShowInTaskbar 預設值為 True TopMost 預設值為 False 設定是否顯示控制盒 說明 設定是否顯示求助按鈕 如果最大化或最小化按鈕設定為顯示, 則 HelpButton 屬性值會被忽略 設定表單縮小時所用的圖示 設定是否顯示 設定是否顯示 最大化鈕 最小化鈕 當按視窗右上角的最小化鈕是否顯示在視窗正下方的工作列上 True 表顯示 ;False 表不顯示 設定表單是否允許被其他視窗遮蓋 True: 不允許置最上層 ;False 允許遮蓋 -6

基本輸出入介面設計.1. 配置類型的屬性 屬性名稱 Location 預設值為 0,0 Location/X 子屬性預設值為 0 Location/Y 子屬性預設值為 0 Size 預設值 00,00 Size/ Width 子屬性預設值為 00 Size/ Height 子屬性預設值為 00 說明 設定表單左上角位置 以螢幕左上角為基準, 向右及向下的座標值來表示 [ 例 ] 將表單左上角座標設為 (200,200), 寫法 : Location = New Point(200,200) 設定表單左上角距離螢幕左邊界的水平距離 [ 例 ] 取得表單左上角 x 座標值 x = Location.X 設定表單左上角距離螢幕上邊界的垂直距離 [ 例 ] 取得表單左上角 y 座標值 y = Location.Y 設定表單的尺寸大小 [ 例 ] 將表單大小設為 (200,200) Size = New Size(200,200) 設定表單的水平寬度 [ 例 ] 取得表單與視窗左邊界的距離 width = Size.Width 設定表單的垂直高度 [ 例 ] 取得表單與視窗上邊界的距離 height = Size.Height StartPosition 預設值 : WindowsDefault Location 設定初始化視窗在螢幕出現時的位置有五種狀態 : Manual( 手動 ) CenterScreen( 螢幕中央 ) WindowsDefaultLocation( 預設位置 ) WindowsDefaultBounds( 螢幕中央並調整邊界為適當大小 ) CenterParent( 父視窗中央 ) WindowState 預設值 Normal 設定表單執行的狀態 : Normal( 一般 ): 表單為設計階段大小 Minimized( 最小化 ): 表單縮為圖示, 置於工作列上 Maximized( 最大化 ): 表單放大佔滿整個螢幕 [ 例 ] 設定表單最大化 WindowState = FormWindowState.Maximize 在程式中的座標和數學上的座標不同, 表單的左上角座標值為 (0,0), 小括號內的第一個參數 X 座標值也就是水平距離 ; 第二個參數為 Y 座標值也就是垂直距離 所以, 表單左上角座標水平方向向右為正 ; 垂直方向向下為正 上表中的 StartPosition 屬性值, 可以設定程式執行時表單在螢幕顯示的起始位置 若要指定表單顯示的座標位置, 要先選 -7

Visual Basic 基礎必修課 取表單, 再到屬性視窗將 StartPosition 屬性值設為 Manual, 然後再設定 Location 屬性值, 就可以指定表單的起始座標 若要設定表單以最大化方式顯示, 是要設 WindowState 的屬性值為 Maximized, 而不是設定 MaximizeBox 的屬性值為 True.2 表單的常用事件 在 Windows 作業系統下, 我們將使用者在輸出入介面的每一個動作都視為 事件, 事件會被作業系統所攔截, 並傳遞給應用程式的處理程序來處理 這就是事件驅動 (Event-Driven) 的觀念 在第一章已對 事件驅動 做過簡單的介紹 事件驅動是指程式執行時, 程式會不斷地偵測使用者是否有觸發事件? 再根據系統所判斷出的事件名稱, 執行該事件處理程序內所撰寫的程式碼 由於程式執行時的流程是由操作者決定, 因此每次執行流程未必一樣 事件是物件傳送訊息給應用程式, 通知有事情發生需要處理, 而傳送訊息的動作稱為 觸動事件 或 引發事件 所觸動的事件要如何處理, 就以程式碼 ( 指令或敘述的集合 ) 撰寫在該事件處理程序裡 例如 : 家中門鈴響, 就是 門鈴 物件的 按一下 事件被觸動, 發出訊息 ( 門鈴聲 ) 通知有人來 我們可將要處理方式的程式碼寫在 門鈴 _ 按一下 事件處理程序中, 其處理方式若是熟識的人就開門歡迎 ; 若是推銷員就假裝不在家 -8

基本輸出入介面設計 VB 對事件處理程序的命名, 結合了事件傳送者 ( 表單或控制項 ) 的物件名稱和事件名稱, 兩者中間以底線作區隔 例如 : 在表單上按一下會觸動表單的 Click 事件, 若表單名稱為 Form1, 其 Click 事件處理程序的寫法如下 : Private Sub Form1_Click (sender As Object, e As EventArgs) Handles MyBase.Click 引數 1 引數 2 事件名稱 物件名稱 定義將要處理的事件 End Sub 物件包括表單或控制項, 它們都有自己本身對應的事件 有些事件可能是某控制項所獨有, 也可能其他的控制項也具有 譬如 : 在表單物件上按一下會觸動該表單的 Click 事件, 在按鈕控制項上按一下也會觸動該按鈕的 Click 事件 表單物件有 Load 事件, 但是按鈕控制項則沒有 Load 事件 本節先介紹表單物件常見到的四個事件, 依序為 Load Activated Click DoubleClick 表單事件名稱 Load ( 預設事件 ) Activated Click DoubleClick 說明 表單的預設事件, 只要在表單上無放置控制項的地方快按滑鼠兩下即進入表單的 Load 事件程式碼編輯環境 Load 事件是程式開始執行第一次載入表單時, 優先執行的事件處理程序 通常由程式開始執行至結束只被執行一次 在此事件處理程序中通常用來設定物件屬性的初值 Activated 事件的發生時機是每當表單成為作用表單時, 即會觸動該表單的 Activated 事件 此事件在程式執行中被觸發的次數可能不止一次 表單被設為 作用表單 的情況有下列三種 : 表單第一次被載入時, 先執行 Load 事件處理程序, 接著執行 Activated 事件處理程序 使用滑鼠游標點選表單, 使它置於其他表單最上層, 此時該表單就成為 作用表單 若將表單最小化至工作列, 再把它開啟時, 該表單會被放在桌面的最上層, 此時該表單就成為 作用表單 程式執行時, 在表單內沒有放置控制項的地方按滑鼠左鍵一下時, 就會觸動該表單物件的 Click 事件處理程序 程式執行時, 在表單內沒放控制項的地方快按滑鼠左鍵二下時, 就會觸動該表單的 DoubleClick 事件處理程序 由於執行 DoubleClick 事件前,Click 事件會先被觸動, 設計程式時要注意兩事件的先後關係 例如 : 在 Click 事件設某數加 1, 在 DoubleClick 事件設某數加 2 實際執行 DoubleClick 事件後某數會加, 因為在 Click 事件處理程序內某數先加 1, 在 DoubleClick 事件處理程序內又再加 2-9

Visual Basic 基礎必修課 解題技巧 FileName:eventTest.sln 試依據 Form1 表單物件發生下列事件, 寫出各事件設定相關屬性的程式碼 : Load 事件 : 設表單標題欄的標題文字為 "Load", 並設表單寬度為 500 高度為 00, 表單背景色為黃色 Activated 事件 : 執行時標題文字增加 ",Act" 字串 Click 事件 : 執行時標題文字增加 ",Click" 字串, 表單寬度加寬 10 點 DoubleClick 事件 : 執行時標題文字增加 ",Dclick" 字串 建立專案和表單 Load 事件處理程序 1. 建立專案名稱為 eventtest 的 Windows Forms App 專案 2. 在表單空白處快按兩下, 直接進入 Form1_Load 事件處理程序的編碼窗格. 本例要求在 Form1_Load 事件處理程序內做下列屬性初值設定 : 將標題欄的 Text 關聯文字屬性設為 "Load" 將表單的 Width 屬性值設為 500,Height 屬性值設成 00 將表單的背景色設為黃色 Private Sub Form1_Load (sender As Object, e As EventArgs) Handles MyBase.Load Text = "Load" Width = 500 Height = 00 BackColor = Color.Yellow End Sub 建立表單物件的 Form1_Activated 事件處理程序 1. 在 屬性視窗 工具列, 先按鈕, 將名稱按字母順序排列, 再點按鈕拉出表單的事件清單 接著再移動滑鼠到 Activated 事件名稱上快按兩下, 進入程式編碼視窗的 Activated 事件處理程序內 快按兩下 -10

基本輸出入介面設計 2. 本例要求在 Form1_Activated 事件處理程序內做下列屬性初值設定 : 將標題欄的關聯文字 Text 屬性增加,Act 字串 Private Sub Form1_Activated (sender As Object, e As EventArgs) Handles Me.Activated Text += ",Act" End Sub 建立表單物件的 Form1_Click 事件處理程序 1. 以另一種建立事件處理程序方式, 移動滑鼠到表單上按滑鼠右鍵由快顯功能表清單中選取 檢視程式碼 進入程式碼編輯視窗 2. 按下圖中間窗格 物件下拉式清單 的下拉鈕由清單中選取 (Form1 個事件 ) 1 2. 再按右窗格 事件下拉式清單 的下拉鈕由清單中選取 Click 事件 進入 Form1_Click 事件處理程序的編輯程式碼窗格 4 5-11

Visual Basic 基礎必修課 4. 在 Form1_Click 事件處理程序內輸入下列程式碼 : Private Sub Form1_Click (sender As Object, e As EventArgs) Handles MyBase.Click Text += ",Click" Width += 10 End Sub 建立表單物件的 Form1_DoubleClick 事件處理程序 1. 按照上面建立事件方式, 在編碼窗格中, 先在中間窗格物件下拉式清單中選取 (Form1 個事件 ), 再到右窗格事件下拉式清單中選取 DoubleClick 事件 2. 在 Form1_DoubleClick 事件處理程序內輸入下列程式碼 : Private Sub Form1_DoubleClick(sender As Object, e As EventArgs) Handles Me.DoubleClick Text += ",DClick" End Sub 按照下列指示操作觀察各事件變化情形 : 1. 按鍵執行程式, 先執行 Form1_Load() 事件處理程序 2. 接著自動執行 Form1_Activated() 事件處理程序. 在表單上按一下觸動 Form1_Click() 事件處理程序 執行 Form1_Click() 事件, 將標題欄名稱尾部加上 ",Click" -12

基本輸出入介面設計 4. 在表單上快按兩下依序觸動 Form1_Click() 和 Form1_DoubleClick() 事件處理程序, 將標題欄名稱尾部加上 ",Click,DClick" 5. 先將表單最小化將表單以圖示置於下方的工作列, 再到視窗最下方工作列點選此表單會觸動表單的 Form1_Activated() 事件處理程序 6. 點選程式視窗右上方的關閉鈕, 關閉表單 完整程式碼 FileName: eventtest.sln 01 Public Class Form1 02 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 0 Text = "Load" -1

Visual Basic 基礎必修課 04 Width = 500 05 Height = 00 06 BackColor = Color.Yellow 07 End Sub 08 09 Private Sub Form1_Activated(sender As Object, e As EventArgs) Handles Me.Activated 10 Text += ",Act" 11 End Sub 12 1 Private Sub Form1_Click(sender As Object, e As EventArgs) Handles MyBase.Click 14 Text += ",Click" 15 Width += 10 16 End Sub 17 18 Private Sub Form1_DoubleClick(sender As Object, e As EventArgs) Handles Me.DoubleClick 19 Text += ",DClick" 20 End Sub 21 End Class. 標籤控制項 使用 Label 標籤控制項可在表單上提供輸出入訊息, 譬如提示訊息 亦可用來顯示程式執行過程或最後結果的相關訊息, 但要注意標籤控制項只能顯示文數字資料, 無法透過鍵盤來輸入資料..1 標籤控制項常用的屬性 屬性名稱 Name ( 預設值 Label1) AutoSize ( 預設值 True) BorderStyle ( 預設值 None) Font/ Name ( 預設新細明體 ) 說明 設定控制項名稱, 在此為標籤控制項的物件名稱 設定控制項的寬度是否隨文字的寬度自動調整 [ 例 ] 將 Label1 標籤控制項寬度固定不自動調整寫法 : Label1.AutoSize = False 設定標籤控制項的框線樣式 : None ( 沒有框線 ) FixedSingle ( 單線固定 ) FixedD ( 立體固定 ) [ 例 ] 將 Label1 標籤控制項邊框設成立體固定 寫法 : Label1.BorderStyle=BorderStyle.FixedD 用來設定顯示字體的字型名稱, 不同字型名稱會顯示不一樣效果的字體 -14

基本輸出入介面設計 屬性名稱 說明 Font/ Size ( 預設值 9) Font/ Unit ( 預設值 Point) Font/ Bold ( 預設值 False) Font/ Italic ( 預設值 False) Font/Strikeout ( 預設值 False) Font/Underline ( 預設值 False) ForeColor ( 預設值 Control) Image ( 預設值為無 ) ImageAlign Text ( 預設值 Label1) 用來設定字體大小 設定字體大小的單位, 有下列 6 種 : World ( 全局座標系統 ) Pixel ( 像素 ) Point ( 點數 - 印表機的單位,1 點為 1/72 英吋 ) 預設值 Inch ( 英吋 ) Document ( 文件單位 - 一單位為 1/00 英吋 ) Millimeter ( 公厘 ) True ( 以粗體字顯示 ) False ( 非粗體字 ) True ( 以斜體字顯示 ) False ( 非斜體字 ) - 預設值 True ( 字體顯示時加刪除線 ) False ( 不加刪除線 ) True ( 字體顯示時加底線 ) False ( 不加底線 ) 設定物件或控制項的前景色, 在標籤控制項中 ForeColor 屬性就是用來設定文字的顏色 顯示圖形, 使用方式與表單的 BackgroundImage 相同 當 Image 屬性有存入圖片時, 用來安排圖片在控制項上面的位置 屬性值和 TextAlign 相同 標籤控制項上面顯示的關聯文字, 可當輸入的提示訊息或顯示輸出結果 設定控制項上面 Text 屬性值對齊方式 : TextAlign ( 預設值 TopLeft) TopLeft ( 左上 ) MiddleLeft ( 左中 ) BottomLeft ( 左下 ) TopMiddle ( 中上 ) MiddleCenter ( 置中 ) BottomMiddle ( 中下 ) TopRight ( 右上 ) MiddleRight ( 右中 ) BottomRight ( 右下 ) 由屬性視窗開啟 TextAlign 清單, 直接點選對齊的位置 [ 例 ] 將 Label1 標籤控制項內的文字設成右上角顯示, 寫法 : Label1.TextAlign = ContentAlignment.TopRight -15

Visual Basic 基礎必修課 每個表單或控制項都有一個 Name 物件名稱屬性, 以方便在程式中叫用 一般在建立物件時都會賦予預設的物件名稱 如表單物件預設名稱為 Form1 Form2 ; 標籤控制項預設名稱為 Label1 Label2 物件除了可延用預設名稱外, 也可自行命名以方便在程式中辨識 為了方便在程式中容易辨識該物件是屬哪類的物件, 可在物件名稱的前面加上代表該控制項的前置字串 如 : 標籤控制項以 Lbl 當前置字串, 若該標籤控制項用來存放單價, 則將標籤控制項的 Name 屬性命名為 LblPrice, Lbl 代表標籤控制項, Price 代表單價 在表單設計階段若將 100 元 置入屬性視窗中 LblPrice 標籤控制項的 Text 關聯文字屬性上, 自動會將 100 元 顯示在表單中 LblPrice 標籤控制項的上面 也可以在程式執行階段使用 LblPrice.Text = "100 元 " 直接設定..2 Font 屬性的設定表單或控制項的 Font 字型屬性主要是用來設定在表單或該控制項上面所顯示關聯文字的字型種類 字型樣式 字型大小 顯示效果 下面以 Label1 標籤控制項為例分別在表單設計模式或程式執行階段來設定 Text 關聯文字屬性値的字型大小為 12, 字型種類為標楷體, 樣式為粗體 : 1. 表單設計階段 點選工具箱中標籤工具類別, 然後在表單上按一下或拖曳滑鼠, 就會建立一個 Label1 標籤控制項 先點選標籤控制項成作用控制項, 然後到屬性視窗點選 Font 屬性 再按屬性值的按鈕, 開啟 字型 對話方塊, 再按照右下圖操作 4 5 6 1 2-16

基本輸出入介面設計 2. 程式執行階段 程式中可使用 New Font() 來設定字型的種類 大小 樣式 譬如 : 將 Label1 標籤控制項內字體大小設為 12, 並以 標楷體 粗體 顯示, 其寫法如下 : Label1.Font = New Font(" 標楷體 ", 12, FontStyle.Bold) 字型樣式 (FontStyle) 參數有 :Bold( 粗體 ) Italic( 斜體 ) Regular( 標準 ) Strikeout( 刪除線 ) 和 Underline( 底線 ) 若字型樣式是 ( 粗體 + 斜體 ) 可採 Xor 互斥或邏輯運算子來完成, 其寫法如下 : Label1.Font = New Font(" 標楷體 ", 12, FontStyle.Bold Xor FontStyle.Italic).4 按鈕控制項 當在表單上輸入資料時, 系統本身並不知道是否已經輸入資料完畢, 必須搭配按鈕 (Button) 來做確認的工作 還有表單上顯示的資料是否看完, 系統本身並不知道, 亦必須透過按鈕來做確認的工作 所以按鈕控制項是視窗程式設計使用頻率很高的控制項之一.4.1 按鈕控制項常用的屬性 屬性名稱 Enabled ( 預設值 True) 說明 設定按鈕是否有效 True: 按鈕按下去有效 ;False: 按鈕無效 [ 例 ] 將 Button1 按鈕設為失效, 按鈕上面的文字會呈灰色 即設按鈕的 Click 事件不會被觸動 Button1.Enabled = False TabIndex 設定控制項駐停的順序, 而當按鍵時, 會使現有的控制項按該順序來輪流當作用控制項 按照建立的順序由 0 開始編號 TabStop 預設值 True 設定控制項是否有駐停點 ( 焦點 ), 若有, 按會被停駐輪流當作用控制項, 鍵時, 該控制項才有機 Visible ( 預設值 True) 設定按鈕是否顯現 True 按鈕可見 ;False 按鈕被隱藏 [ 例 ] 將 Button1 按鈕設為隱藏看不到 Button1.Visible = True.4.2 按鈕控制項常用的事件 -Click 事件 Click 事件為按鈕的預設事件 表單或控制項都有自己的預設事件, 預設事件是指該事件為該物件的常用事件 只要在表單設計模式下, 移動滑鼠到表單或控制項上快滑鼠兩 -17

Visual Basic 基礎必修課 下, 便進入表單或該控制項的預設事件的程式碼編輯模式 譬如 : 程式執行時在表單中的 鈕上按一下, 系統馬上執行該按鈕對應的 Click 事件處理程序 FileName:moveControl.sln 製作一個可上下移動控制項的程式 當按 鈕, Visual Studio 2017 往上移 10 Pixels; 按 鈕, Visual Studio 2017 往下移 10 Pixels 按 鈕或 鈕無效 輸出要求 解題技巧建立輸出入介面 1. 依輸出結果本例需建立一個標籤控制項用來存放 Visual Studio 2017 文字 2. 四個按鈕 鈕有效, 鈕無效. 在標籤控制項上壓滑鼠右鍵選取 提到最上層 (B) 指令避免移動標籤控制項被按鈕遮住 4. 表單上各控制項的 Name 和 Text 屬性修改如下 : BtnLeft BtnUp BtnRight LblMove BtnDown 撰寫相關事件處理程序 1. 表單載入觸動 Form1_Load 事件處理程序時, 修改下列屬性的初值 : 將 LblMove 標籤控制項的 Text 關聯文字屬性值由 Label1 改成 " Visual Studio 2017 " -18

基本輸出入介面設計 由於 Visual Studio 2017 本例要求以標楷體 大小 12 粗體字顯示, 必須以 New Font() 來設定 Font 屬性 Visual Studio 2017 標籤控制項以淺藍(Cyan) 底 深藍 (Blue) 字顯示, 必須修改 BackColor 和 ForeColor 屬性 由於左右按鈕失效, 必須將兩者的 Enabled 屬性設為 False 2. 按鈕, 將 LblMove 標籤控制項往上移 10 pixels, 必須將往上移動作的程式碼寫在 BtnUp_Click 事件處理程序內, 其做法如下 : 先取得 LblMove 標籤控制項的左上角座標置入 x 和 y 變數 上移是改變 y 座標值, 將 y 值減 10 使用 New Point(x,y) 將新的左上角座標指定給 LblMove 的 Location 屬性, 即完成上移的動作. 按鈕, 將 LblMove 標籤控制項往下移 10 pixels, 需將下移的動作的程式碼寫在 BtnDown_Click 事件處理程序內, 做法和上一步驟類似, 將 y 值加 10 完整程式碼 FileName: movecontrol.sln 01 Public Class Form1 02 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 0 LblMove.Text = " Visual Studio 2017" 04 LblMove.Font = New Font(" 標楷體 ", 12, FontStyle.Bold) 05 LblMove.BackColor = Color.Cyan 06 LblMove.ForeColor = Color.Blue 07 LblMove.Location = New Point(100, 100) 08 BtnRight.Enabled = False 09 BtnLeft.Enabled = False 10 End Sub 11 12 Private Sub BtnUp_Click(sender As Object, e As EventArgs) Handles BtnUp.Click 1 Dim x, y As Integer 14 x = LblMove.Location.X 15 y = LblMove.Location.Y - 10 16 LblMove.Location = New Point(x, y) 17 End Sub 18 19 Private Sub BtnDown_Click(sender As Object, e As EventArgs) Handles BtnDown.Click 20 Dim x, y As Integer 21 x = LblMove.Location.X 22 y = LblMove.Location.Y + 10 2 LblMove.Location = New Point(x, y) 24 End Sub 25 End Class -19

Visual Basic 基礎必修課 馬上練習 延續上一範例將左 右按鈕變成有效, 按右鈕增加 10 Pixels, 按左減掉 10 Pixels 變成可以上下左右移動的標籤控制項.5 文字方塊 TextBox 標籤控制項僅能在表單上顯示資料, 卻無法做輸入資料或修改資料的動作 若使用者需要對表單上的資料做輸入或修改的動作, 此時就必須使用工具箱的文字方塊工具來完成 所以 文字方塊 控制項是允許輸入 修改和顯示資料, 也就是說它具有讀寫功能, 而標籤控制項只具有唯讀功能.5.1 文字方塊控制項常用的屬性 屬性名稱 說明 MaxLength ( 預設值 :2,767) Text ( 預設值 : 空字元 ) 設定文字方塊內可容納輸入的最多字元數目 [ 例 ] 限制只能輸入 5 個字元 TextBox1.MaxLength = 5 設定文字方塊上面顯示的關聯文字 輸入的資料會以字串方式存入到 Text 屬性 若在設計或執行階段此屬性值有異動, 文字方塊上的資料亦跟著異動 PasswordChar ( 預設值 : 空字元 ) ReadOnly ( 預設值 :False) MultiLine ( 預設值為 False) WordWrap ( 預設值為 True) 由鍵盤在控制項內輸入字元時, 輸入的字元不直接顯示, 改由指定的字元取代 適用於密碼輸入 使用時 MultiLine 屬性值應設為 False [ 例 ] TextBox1 文字方塊輸入時改用星號取代輸入字元 TextBox1.PasswordChar = "*" 設定文字方塊內的資料是否允許修改 若為 False 表允許修改 ; 若為 True 表唯讀, 無法修改和標籤控制項一樣只能顯示 [ 例 ] TextBox1 文字方塊設成唯讀狀態 TextBox1.ReadOnly = True 當顯示文字資料超過控制項所設定寬度時, 決定是否採多行或單行顯示資料 若為 False 表不允許多行顯示 ; 若設為 True 表允許多行顯示 [ 註 1] [ 例 ] TextBox1 文字方塊控制項設成多行顯示 TextBox1.MultiLine = True 當 MultiLine 屬性值設為 True 時, 可進一步設定文字是否自動換行, 若為 True 表自動換行 [ 註 2] -20

基本輸出入介面設計 屬性名稱 ScrollBars ( 預設值為 None) 說明用來設定在多行顯示的文字方塊控制項內是否出現垂直或水平捲軸 有下列屬性值 : None ( 無 ) Horizontal ( 水平捲軸 ) Vertical ( 垂直捲軸 ) Both ( 水平與垂直捲軸兩者皆有 ) [ 例 ] TextBox1 文字方塊控制項設成有水平捲軸 TextBox1.ScrollBars =ScrollBars.Horizontal [ 註 1] 由於文字方塊控制項的 MultiLine( 多行 ) 屬性, 預設屬性值為 False, 也就是單行顯示 所以當文字資料超過文字方塊控制項的寬度時, 超出的文字資料無法顯示出來 若文字內容多需要多行顯示時, 要將 MultiLine 屬性設為 True, 此時文字方塊控制項就可以拖曳大小來容納多行文字 [ 註 2] 若希望超過文字方塊控制項寬度的資料會自動移到下一行, 可以將 WordWrap( 自動換行 ) 屬性設為 True 當 WordWrap 屬性設為 False 時, 則可以設定 ScrollBars( 捲軸 ) 屬性, 使控制項顯示垂直或水平捲軸, 供使用者拖曳來顯示文字.5.2 文字與數值間的轉換函式文字方塊控制項中最常使用的屬性就是 Text 關聯文字屬性, 不管輸入的資料是文字或是數值,VB 自動轉成字串存入 Text 屬性中 因此 Text 屬性値需要計算時必須先使用 Val 函式, 將字串轉成數值資料才能運算 本節先介紹 Val 和 Str 函式簡單的用法, 其語法如下 : 語法 : Val(str): 將 str 字串變數或字串常值前面為數字的部份轉成數值資料 Str(num): 將 num 數值變數或數值常值轉換成文字資料 1. Val("168") 168 ( 將字串 168 全部轉成數值) 2. Val("7Eleven") 7 ( 僅將最前面為數字部份 7 轉成數值). Val("Visual Basic 2017") 0 ( 字串第一個字元若非數字傳回數值 0) 4. Str(168) " 168 " ( 將數值 168 轉成字串其中 : 空格 ) 5. Val("168") 168 ( 將字串 168 全部轉成數值) 6. Str(-168) "-168" ( 將數值 -168 轉成字串) 7. Str(1.68) " 1.68 " ( 將數值 1.68 轉成字串其中 : 空格 ) -21

Visual Basic 基礎必修課.5. 文字方塊控制項常用的方法所謂方法 (Method) 就是系統提供給表單或控制項的特定功能 在程式執行的階段, 可以使用表單或控制項本身所提供的 方法, 協助我們快速解決問題 下面介紹文字方塊控制項所提供常用的方法 : 一 Clear( ) 方法 Clear() 方法用來將文字方塊上面的關聯文字清除 譬如在程式執行時, 要將 TextBox1 文字方塊內顯示的關聯文字清除, 其寫法有下面兩種方式 : TextBox1.Clear( ) TextBox1.Text = "" 使用方法 指定空字串 二 Focus( ) 方法用來設定文字方塊控制項為駐停焦點, 即將插入點游標移到此控制項 所謂 駐停焦點 (Focus) 就是使某個控制項成為作用控制項, 以供使用者操作 控制項具有 TabIndex TabStop 屬性者才具有駐停功能, 欲使用 Focus() 方法必須先將該控制項的 Visible 與 Enabled 屬性值設為 True 才有效 至於 Focus 方法的語法如下 : 語法 : 物件名稱.Focus( ) FileName:F2C.sln 試設計一個華氏溫度轉換成攝氏溫度的程式 使用者輸入華氏溫度 ( 最多三位數 ) 後, 點擊按鈕後, 就會計算出攝氏溫度 公式如下 : 攝氏溫度 :( 華氏溫度 -2) 5 / 9 輸出要求 -22

基本輸出入介面設計 解題技巧建立輸出入介面 1. 新增專案並以 F2C 為新專案名稱 2. 由執行結果可知, 本範例必須在表單上建立下列各控制項 : TxtInput 文字方塊控制項用來接受使用者輸入的溫度 TxtAns 文字方塊控制項用來顯示換算後的溫度 BtnF2C 按鈕控制項, 用來計算華氏轉攝氏的溫度 TxtInput BtnF2C TxtAns 問題分析 1. 在表單載入時會呼叫表單 Load 事件, 在 Form_Load 事件處理函式內中撰寫下列屬性初始設定 : TxtInput 文字方塊控制項限輸入三位數的數值, 因此需將 TxtInput 文字方塊的 MaxLength 屬性值設為 TxtInput 的 TabIndex 屬性值設為 0, 等待使用者輸入資料 顯示結果不允許修改, 也就是只能顯示文字內容, 此時需將 TxtAns 文字方塊的 ReadOnly 屬性設為 True 即可 但事實上若只要顯示文字內容, 使用 Label 標籤控制項比文字方塊控制項簡單 2. 按鈕會觸動所屬控制項的 Click 事件處理程序, 所以將計算公式的程式碼撰寫在 BtnF2C_Click 事件處理程序中 : 因為 TxtInput 的 Text 屬性值為字串, 因此需用 Val 函式轉為數值, 然後再代入公式計算 並且以字串運算子 <&> 合併說明文字顥示在 TxtAns 文字方塊控制項上面 用 Focus() 讓 TxtInput 取得駐停焦點, 等待使用者再輸入 完整程式碼 FileName: F2C.sln 01 Public Class Form1 02 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load -2

Visual Basic 基礎必修課 0 Text = " 華氏轉換成攝氏 " 04 TxtInput.MaxLength = 05 TxtInput.TabIndex = 0 06 TxtAns.ReadOnly = True 07 End Sub 08 Private Sub BtnF2C_Click(sender As Object, e As EventArgs) Handles BtnF2C.Click 09 TxtAns.Text = " 攝氏 " & (Val(TxtInput.Text) - 2) * 5 / 9 & " 度 " 10 TxtInput.Focus() 11 End Sub 馬上練習 將上例增加攝氏轉換成華氏溫度的功能, 依按下的按鈕來換算成攝氏溫度或華氏溫度 提示 : 華氏溫度 = 9 / 5 攝氏溫度 + 2.5.4 文字方塊控制項常用的事件 一 TextChanged 事件為文字方塊控制項的預設事件 程式執行時, 當文字方塊的 Text 屬性值有改變時, 就會觸動該文字方塊的 TextChanged 事件 所以在設計程式時, 可以將和 Text 屬性值有關的程式碼寫在 TextChanged 事件處理程序中 譬如 : 上一範例, 我們可將 Button 的 Click 事件中用來計算攝氏溫度的程式碼改寫到 TextChanged 事件中, 當溫度一有改變就會觸動 TextChanged 事件處理程序, 立即顯示該華氏溫度對應之攝氏溫度的互動效果, 就可省掉按鈕控制項 二 Enter 事件當在文字方塊控制項上按一下取得駐停焦點 (Focus) 時, 就會觸發 Enter 事件, 通常在該事件中設定文字方塊的文字初值或將原先輸入的資料清成空白 例如 : 希望某文字方塊預設值為 台中市, 就可以在 Enter 事件中設 Text 屬性值為 台中市, 每當用滑鼠或 鍵移動駐停焦點到該文字方塊時, 關聯文字就自動改為 台中市 -24

基本輸出入介面設計 FileName:Movie.sln 試寫一個電影院售票程式 透過文字方塊控制項提供的 TextChanged 和 Enter 事件, 程式執行時只要輸入全票和半票的張數, 電腦自動計算出全票 半票金額以及總金額 譬如 : 在全票張數文字方塊上按一下, 會將插入點游標移到該控制項上面並將全票張數清成空白和全票金額清成 0 等待重新輸入全票張數 輸出要求 解題技巧建立輸出入介面 1. 新增專案並以 Movie 為新專案名稱 2. 由輸出結果可知, 本實例只有張數允許輸入, 需在表單建立 TxtQtyF 和 TxtQtyH 文字方塊, 其他控制項使用標籤控制項, 各控制項名稱以及相關屬性設計如下圖所示 : LblPriceF LblPriceH TxtQtyF TxtQtyH LblSumF LblSumH LblTotal. 程式編輯階段在屬性視窗中修改下列屬性值 : 所有控制項的字體大小都改為 11 LblSumF LblSumH LblTotal 的 Text 屬性設為空白 LblSumF LblSumH LblTotal 的 AutoSize 屬性設為 False LblSumF LblSumH LblTotal 的 BackColor 屬性設為紫色 LblPriceF 和 LblPriceH 的單價屬性分別設為 250 和 200-25

Visual Basic 基礎必修課 問題分析 1. 由於本例要求全票部分的張數一有改變, 全票金額和合計會跟著改變, 需將這些程式碼寫在 TxtQtyF 文字方塊的 TextChanged 事件處理程序內 LblSumF.Text = Val(LblPriceF.Text) * Val(TxtQtyF.Text) LblSumH.Text = Val(LblPriceH.Text) * Val(TxtQtyH.Text) LblTotal.Text = Val(LblSumF.Text) + Val(LblSumH.Text) 2. 由於半票部分的張數一有改變, 和全票一樣會影響半票金額和合計, 所以 TxtQtyF 文字方塊的 TextChanged 事件處理程序程式碼和 TxtQtyH 文字方塊的 TextChanged 事件處理程序程式碼一樣, 當然你可以單獨再建立 Text Changed 事件處理程序, 但這會增加程式的長度. 由於兩者事件的程式碼一模一樣, 可採用下列共用事件方式處理而不會增加程式長度 操作步驟如下 : 先在表單上選取 TxtQtyH 文字方塊 到屬性視窗中點按事件鈕 將 TxtQtyH 文字方塊的 TextChanged 事件指向 TxtQtyF_TextChanged 事件處理程序 2 1 4 選取完畢在 Private Sub TxtQtyF_TextChanged( )Handles TxtQtyF.TextChanged 的後面 自動再增加了一個 TxtQtyH.TextChanged 事件, 表示 TxtQtyF 與 TxtQtyH 的 TextChanged 事件共用 TxtQtyF_TextChanged 事件處理程序, 如此可縮短程式長度且提高維護性 : Private Sub TxtQtyF_TextChanged (sender As Object, e As EventArgs) Handles TxtQtyF. TextChanged, TxtQtyH.TextChanged End Sub 共用 TxtQtyF_TextChanged() 事件 -26

基本輸出入介面設計 4. 本例要求當滑鼠點選全票張數時, 希望先將全票張數清成空白重新輸入張數, 必須將 TxtQtyF 文字方塊清除的工作寫在 TxtQtyF_Enter 事件處理程序內, 建立此事件方式如下 : 先選取 TxtQtyF 文字方塊 到屬性視窗中點按 事件鈕 在事件清單中選取 Enter 事件名稱, 在空白處快按兩下 2 4 1 在 TxtQtyF_Enter 事件處理程序內將此控制項清成空白, 有兩種方式 : TxtQtyF.Text = "" ( 採用此方式 ) TxtQtyF.Clear() 5. 同樣方式在 TxtQtyH 半票文字方塊輸入張數時, 要先清成空白, 由於和上一步驟程式碼不一樣, 無法和 TxtQtyF_Enter 事件程序共享, 必須另建立自己的 Enter 事件程序 有兩種方式 : TxtQtyH.Text = "" TxtQtyH.Clear() ( 採用此方式 ) 完整程式碼 FileName: Movie.sln 01 Public Class Form1 02 Private Sub TxtQtyF_TextChanged(sender As Object, e As EventArgs) Handles TxtQtyF.TextChanged, TxtQtyH.TextChanged 0 LblSumF.Text = Val(LblPriceF.Text) * Val(TxtQtyF.Text) 04 LblSumH.Text = Val(LblPriceH.Text) * Val(TxtQtyH.Text) 05 LblTotal.Text = Val(LblSumF.Text) + Val(LblSumH.Text) 06 End Sub 07 08 Private Sub TxtQtyF_Enter(sender As Object, e As EventArgs) Handles TxtQtyF.Enter 09 TxtQtyF.Text = "" -27

Visual Basic 基礎必修課 10 End Sub 11 12 Private Sub TxtQtyH_Enter(sender As Object, e As EventArgs) Handles TxtQtyH.Enter 1 TxtQtyH.Clear() 14 End Sub 15 End Class 馬上練習 延續上例新增一個優待票, 票價為 100, 計算各類票價金額以及合計金額.6 格式化輸出 欲將電腦處理完畢的結果輸出到螢幕顯示或印表機印成報表, 若能將輸出的資料排列整齊不但美觀且方便閱讀, 此時就需要對輸出的資料加以格式化才能達成.6.1 常用常數一 vbnewline vbcrlf 常數 VB 提供 vbnewline 和 vbcrlf 做為強迫換行字元常數, 使用時機是資料需要多行顯示時使用 例如希望 LblMsg 標籤控制項內, 將 最賣座的電影 : 和 阿凡達 Avatar 字串分成兩行顯示, 寫法如下 : 語法 : LblMsg.Text = " 最賣座的電影 :" & vbnewline & " 阿凡達 Avatar" 二 vbtab 常數在 Microsoft Office Word 文書處理編輯區中, 按鍵文字會跳到下一個定位點上, 在程式中也可以使用 vbtab 定位字元常數, 來讓文字跳到下一個定位點 定位點和定位點中間可以容納 8 個字元的範圍, 如果字串長度超過 8 個字元就會多佔一個定位點, 例如字串長度為 10 個字元會佔用兩個定位範圍 例如希望 TxtAddress 文字方塊控制項內, 姓名 電話 和 地址 文字以定位形式顯示, 其寫法如下 : 語法 : TxtAddress.Text = " 姓名 " & vbtab & " 電話 " & vbtab & " 地址 " -28

基本輸出入介面設計.6.2 常用函式一 Len 函式可以取得接在 Len 函式後面小括號內指定字串的長度 ( 字元數 ), 不管是中文字 英文字 空格長度都視為 1 例如下列敘述的傳回值為 22: 語法 : string_lenght = Len ( Visual Basic 2017 真好用! ) 二 Space 函式可以設定接在 Space() 函式後面小括號內指定數量的空白字元, 在顯示文字時可以利用該函式調整左右間距使得上下文字位置對齊 例如希望字串長度補足為 8, 程式寫法如下 : 語法 : user_name = TxtName.Text & Space(8 - Len(TxtName.Text)) 三 Format 函式 Format 函式可以將數值或字串資料, 接在 Format() 函式後面小括號內引數所指定的格式轉換成字串 語法 : 語法 : Format ( 運算式 [, fmt] ) 語法中運算式可為數值或數值運算式, 而時間視同數值 fmt 是代表轉換後的字 串格式, 若省略此參數 Format 函式會將數值轉換成字串, 並將正數前面的空白去除 1. 常用 Format 函式的數字預設格式如下 : 符號 說明 範例 G g 一般的數字顯示 Format(124.567, "g") 124.567 C c 貨幣的顯示方式 Format(124.567, "c") NT$1,24.57 F f 小數點以下兩位顯示 Format(124.567, "f") 124.57 N n 小數點以下兩位, 再加千位 Format(124.567, "n") 1,24.57 P p 百分比顯示方式 Format(124.567, "p") 12,456.70% E e 科學記號顯示方式 Format(124.567, "e") 1.24567e+00-29

Visual Basic 基礎必修課 符號說明範例 X x 十六進位顯示方式, 只支援 Byte Short, Integer, Long 型別 Format(6555, "x") ffff 2. 常用 Format 函式的數字自訂格式 : 符號說明範例 0 代表一個位數, 如果沒有數值就補上 0 Format (12, "0000") 012 # 代表一個位數, 如果沒有數值不補 0 Format (-12, "####") -12. 小數點 Format (12., "#.00") 12.0 % 以百分比顯示數值 Format (0.12, "0.00%") 12.0%, 千位分隔 Format (124, "#,###") 1,24 - + $ 空格 照左列符號字元顯示 Format (124.5,"$#,##0.00") $1,24.50. 常用 Format 函式的時間預設格式 (Now 函式用來取得目前時間 ) 符號說明範例 General Date G 顯示日期和時間 Format (Now(), "G") 2017/8/25 下午 09:2:12 Long Date D 顯示日期 Format (Now(), "D") 2017 年 8 月 25 日 Short Date d 顯示日期 Format (Now(), "d") 2017/8/25 Long Time T 顯示時間, 含時 分 秒 Format (Now(), "T") 下午 09:2:12 Short Time t 顯示時間, 含時 分 Format (Now(), "t") 下午 09:2 M m 顯示月 日 Format (Now(), "M") 8 月 25 日 f F S 顯示日期和時間 顯示日期和時間 Format (Now(), "f") 2017 年 8 月 25 日下午 09:2 Format(Now(), "s") 2017-08-25T21:2:12 4. 常用 Format 函式的時間自訂格式 : 符號 說明 範例 : 時間的分隔符號 Format(Now(), "h:m:s") 4:24:59 / 日期的分隔符號 Format(Now(), "yyyy/m/d") 2017/7/12-0

基本輸出入介面設計 符號說明範例 dd ddd dddd 顯示日期,dd 的值由 1~1 顯示日期的星期 ddd 顯示星期的簡稱 ;dddd 顯示星期全稱 Format (Now(), "dd") 21 Format (Now(), "dddd") 星期五 Format (Now(), "ddd") 週五 MM MMM MMMM yy yyyy hh HH mm ss Tt 顯示月份,MM 顯示月數由 1~ 12;MMM 顯示月份簡稱 ;MMMM 顯示月份全稱 顯示年份, 其值由 100~9999 顯示小時數,hh 顯示 12 小時制 ; HH 顯示 24 小時制時間 顯示分鐘值, 其值由 0~59, 若為一位數會補零 顯示秒鐘值,ss 值由 0~59, 若為一位數會補零 顯示 12 小時制的上 / 下午 Forma t(now(), "MM") 09 Format (Now(), "MMM") 九月 Format (Now(), "yy") 08 Format (Now(), "yyyy") 2017 Format (Now(), "hh"), 結果為 09 Format (Now(), "HH"), 結果為 21 Format (Now(), "mm") 06 Format (Now(), "ss") 47 Format (Now(), "tt") 下午 FileName:listSalary.sln 顯示薪資明細表程式 使用 Format 函式和 vbtab 做文字資料定位, 使得輸出資料按照下圖指定格式多行顯示 輸出要求 解題技巧 建立輸出入介面 1. 新增專案並以 listsalary 為新專案名稱 -1

Visual Basic 基礎必修課 2. 建立輸出入介面 由執行結果可知, 本實作必須在表單上建立 TxtList 文字方塊控制項來顯示薪資明細表內容 TxtList 在編輯程式階段如下圖的 TxtList 控制項右上角的按一下出現智慧標籤, 勾選 MultiLine 屬性設為 True 表多行顯示, 方可將文字方塊拉大呈多行, 以便顯示指定的資料 1 2 問題分析由於本例只在文字方塊上顯示對齊的薪資表, 所有程式碼可寫在表單的 Form1_Load 事件處理程序, 先做屬性設定接著才顯示指定的相關資料 : 文字方塊禁止輸入僅能顯示, 將 ReadOnly 屬性設為 True 表唯讀 為讓文字方塊不駐停, 將 TabStop 屬性設為 False 透過 Format 函式 Space 函式來加入空白和 vbtab 做文字資料定位, 及 vbcrlf 來換行, 讓資料顯示時能上下對齊提高可讀性 完整程式碼 FileName: listsalary.sln 01 Public Class Form1 02 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 0 TxtList.WordWrap = True 04 TxtList.ReadOnly = True 05 TxtList.TabStop = False -2

基本輸出入介面設計 06 TxtList.Text = Space(4) & " 碁峰資訊工作室薪資表 " & Space(4) & _ Format(Now, "G")& vbcrlf & vbcrlf 07 TxtList.Text &=" 姓名 " & vbtab & " 到職日 " & vbtab & Space(2) & " 薪資 " & _ vbtab & vbtab &" 備註 " & vbnewline & vbnewline 08 TxtList.Text &=" 張三丰 " & vbtab & Format(#/17/1990#, "yy-mm-dd") & _ vbtab & Space(2) & Format(115000, "$ 000,000") & vbtab & " 經理 " & vbcrlf 09 TxtList.Text &=" 喬峰 " & vbtab & Format(#8/1/1995#, "yy-mm-dd") & _ vbtab & Space(2) & Format(86100, "$ 000,000") & vbtab & " 工程師 " & vbcrlf 10 TxtList.Text &=" 令狐沖 " & vbtab & Format(#7/16/1998#, "yy-mm-dd") &_ vbtab & Space(2) & Format(65000, "$ 000,000") & vbtab & " 秘書 " & vbcrlf 11 End Sub 12 End Class.7 InputBox 函式 在 VB 程式中可使用 InputBox 函式, 可免去在表單上建立控制項, 可直接顯示輸入對話方塊, 使用者可在所提供的文字框內輸入資料, 再按鈕, 就可達到輸入資料的目的 用 InputBox 函式鍵入的資料會以字串型別放入等號指定的字串變數, 其語法如下 : 字串變數 = InputBox ( 提示訊息 [, [ 標題 ] [, [ 預設值 ] [, Xpos, Ypos] ] ] ) 對話方塊左上角座標 上圖使用 InputBox 輸入對話方塊函式, 將輸入值存放到 city 變數 寫法如下 : city = InputBox (" 請輸入居住縣市 :", " 居住地 ", " 台中市 " ) 如果使用者在上面敘述輸入資料後, 再按鈕, 則資料會傳給 city 變數 ; 如按鈕, 則 city 值會是空字串 ("") 呼叫 InputBox 函式時, 會出現一個對話方塊給使用者, 用來由鍵盤輸入文字, 並將輸入的文字傳給等號左邊的字串變數 中括號 [ ] 內的參數, 可省略不用 如果要省略中間的參數, 則必須保留對應的逗號來加以分隔 Xpos,Ypos 參數是設定對話方塊左上角距螢幕左上角的座標, 其單位為 Pixel ( 像素 ), 若省略此參數, 則對話方塊將被置於螢幕中央 -

Visual Basic 基礎必修課.8 MsgBox 函式與 MsgBox 敘述 在 VB 中可以使用 MsgBox 函式與 MsgBox 敘述, 不用在表單上面建立任何控制項就能輕鬆製作出有提示訊息的輸出對話方塊, 而且 MsgBox 函式提供一些按鈕供程式設計者選擇, 可以根據使用者所選取的按鈕, 做為下一個程式流程的依據 MsgBox 函式與 MsgBox 敘述的效果一樣, 只是 MsgBox 函式有傳回值, 可以判斷使用者按下什麼鈕 ; 而 MsgBox 敘述則沒有傳回值 兩者語法如下 : 函式格式 : 傳回值 = MsgBox ( 訊息 [, [ 按鈕格式碼 ] [, 標題 ] ] ) 敘述格式 : MsgBox ( 訊息 [, [ 按鈕格式碼 ] [, 標題 ] ] ) 例 MsgBox(" 是否要儲存檔案嗎? ", + 48, " 存檔 ") 標題 警示圖示 訊息 按鈕.8.1 MsgBox 按鈕格式碼 MsgBox 的按鈕格式碼通常是 按鈕代碼 + 警示圖示代碼 的組合 可以單獨使用按鈕代碼 ( 或列舉型別成員 ), 若還要有警示圖示提醒時, 警示圖示代碼 必須和 按鈕代碼 相加組合成格式碼 按鈕代碼 的相關內容如下表: 代碼 按鈕 MsgBoxStyle 列舉型別成員 0 MsgBoxStyle.OKOnly( 預設 ) 1 MsgBoxStyle.OKCancel 2 MsgBoxStyle.AbortRetryIgnore MsgBoxStyle.YesNoCancel 4 MsgBoxStyle.YesNo 5 MsgBoxStyle.RetryCancel -4

基本輸出入介面設計 警示圖示代碼的相關內容如下表 : 代碼警示圖示 MsgBoxStyle 列舉型別成員 16 MsgBoxStyle.Critical 2 MsgBoxStyle.Question 48 MsgBoxStyle.Exclamation 64 MsgBoxStyle.Information 兩表的代碼可相加, 例如要顯示和兩按鈕又要有圖示, 其按鈕格式碼等於 17 ( 即 1+16=17) 但要注意的是 0~5 之間的代碼, 因屬於同性質是不可互相累加組合,16~64 亦同 其他代碼的相關內容如下表 : 代碼 MsgBoxStyle 列舉型別成員說明 0 MsgBoxStyle.DefaultButton1 第一個按鈕是預設值 ( 預設 ) 256 MsgBoxStyle.DefaultButton2 第二個按鈕是預設值 512 MsgBoxStyle.DefaultButton 第三個按鈕是預設值 0 MsgBoxStyle.ApplicationModal 應用程式強制回應訊息方塊 ( 預設值 ) 4096 MsgBoxStyle.SystemModal 系統強制回應訊息方塊 所有的應用程式都會暫時停止, 直到使用者對訊息方塊做出回應時為止 MsgBox 的按鈕格式碼有代碼和 MsgBoxStyle 列舉型別成員兩種用法, 通常是使用 MsgBoxStyle 列舉型別成員, 可讀性較高 例如要產生如左下圖的訊息框, 程式碼有第 1 2 種寫法 若要加上警示圖示, 如右下圖, 則程式碼為第 ~5 種寫法 : 寫法 1~2 寫法 ~5-5

Visual Basic 基礎必修課 寫法 : 左上圖寫法 1. MsgBox(" 確定要結束程式嗎?", 4, " 結束程式 ") 2. MsgBox(" 確定要結束程式嗎?", MsgBoxStyle.YesNo, " 結束程式 ") 右上圖寫法. MsgBox(" 確定要結束程式嗎?", 6, " 結束程式 ") 4. MsgBox(" 確定要結束程式嗎?", MsgBoxStyle.YesNo + MsgBoxStyle.Question, " 結束程式 ") 5. MsgBox(" 確定要結束程式嗎?", MsgBoxStyle.YesNo Or MsgBoxStyle.Question, " 結束程式 ).8.2 MsgBox 函式傳回值在訊息框內有多個按鈕, 當按下任一個按鈕時會傳回對應的值 程式可藉由傳回值來判斷使用者按了哪個按鈕, 以做為程式執行時的流程判斷 ( 流程判斷需配合後面章節介紹的 If Then 敘述 ) 各按鈕對應的傳回值如下: 代碼 按鈕 MsgBoxStyle 列舉型別成員 1 MsgBoxResult.OK ( 預設值 ) 2 MsgBoxResult.Cancel MsgBoxResult.Abort 4 MsgBoxResult.Retry 5 MsgBoxResult.Ignore 6 MsgBoxResult.Yes 7 MsgBoxResult.No 在程式中可宣告一個整數變數來存放傳回值, 傳回值可查詢上表中的代碼 例如傳回值為 1, 表按鈕 下面敘述使用 return_ value 來存放傳回值 : Dim return_value As Integer return_value = MsgBox(" 你確定要結束程式嗎?", MsgBoxStyle.OKCancel, " 關閉程式 ") 在程式中也可以宣告一個 MsgBoxResult 變數來接受傳回值, 傳回值可以查詢上表 中的代碼常數 例如傳回值為 MsgBoxResult.Yes, 代表使用者按 鈕 使用代 碼常數敘述長度比較長, 但在撰寫程式時因為系統有自動完成功能不須查表, 且可讀 性較高 下面敘述若按 鈕, 結束程式執行 ; 按 鈕, 回原程式 -6

基本輸出入介面設計 Dim result As MsgBoxResult result = MsgBox(" 是否結束?", MsgBoxStyle.YesNo, " 離開?") If (result = MsgBoxResult.Yes) Then End ' 程式結束 FileName:userCheck.sln 試使用 InputBox 函式做輸入使用者名稱的工作, 再透過 MsgBox 敘述來顯示所輸入的使用者名稱 輸出要求 解題技巧問題分析本例開始執行馬上出現左上圖以 InputBox 函式輸入的對話方塊, 輸入 happy 後按鈕, 馬上出現右上圖由 MsgBox 敘述輸出的對話方塊, 顯示 你的使用者名稱是 :happy 所以, 本例不用在表單上建立任何控制項, 必須將程式碼寫在表單的 Form1 _Load 事件處理程序中 編寫程式碼 FileName: usercheck.sln 01 Public Class Form1 02 Private Sub Form1_Load (sender As Object, e As EventArgs) Handles MyBase.Load 0 Dim uname As String 04 uname = (InputBox(" 請輸入使用者名稱 : ", " 輸入使用者名稱 ",, 200, 200)) 05 MsgBox(" 你的使用者名稱是 :" & uname) 06 End Sub 07 End Class -7

Visual Basic 基礎必修課.9 習題 一 選擇題 1. Windows Form 應用程式一定會有下面哪一個物件來當容器? (A) 表單 (B) 標籤控制項 (C) 按鈕控制項 (D) 文字方塊控制項 2. 在程式設計階段要修改控制項的屬性設定, 要開啟 (A) 方案總管 (B) 專案視窗 (C) 屬性視窗 (D) 程式碼視窗. 要改變一個物件的性質, 要改變物件的 (A) 方法 (B) 屬性 (C) 常數 (D) 事件 4. 下列哪個屬性是所有物件都有? (A)Text (B)Name (C)Font (D)BackColor 5. 要改變表單的標題欄的圖示, 要設定哪個屬性? (A)BackColor (B)BackgroundImage (C)Icon (D)ControlBox 屬性 6. 要設定表單的顯示位置必須先將下列哪個屬性設為 Manual? (A)WindowState (B)TopMost (C)StartPosition (D)Location 7. 在設計階段, 快按兩下表單空白處, 會開啟哪一個事件的編碼窗格? (A)Click (B)DoubleClick (C)Load (D)Activated 事件 8. 開啟表單時哪個事件最早被執行? (A)Click (B)DoubleClick (C)Load (D)Activated 事件 9. 通常會在表單哪個事件何者設定初值? (A)Click (B)DoubleClick (C)Load (D)Activated 事件 10. 下列哪個表單的事件在程式執行過程中, 只會被觸動一次? (A)Click (B)DoubleClick (C)Load (D)Activated 事件 二 填充題 1. 如果表單的 Load 事件中沒有程式碼, 開啟表單時會接著執行事件 2. 若希望程式在執行時佔滿桌面而且不讓使用者改變視窗大小, 要設定表單的和屬性值. 在表單上快按兩下滑鼠左鍵會觸動表單的和事件 4. 若設定控制項的屬性值為 False, 則該控制項會沒有作用 -8

基本輸出入介面設計 5. 若要在 LblBook 標籤控制項上顯示 Visual Basic 2017, 程式碼應為 LblBook. = 三 程式設計 1. 使用 Format 函式和 vbtab 做文字資料定位, 設計一個通訊錄 2. 程式一執行就請使用者輸入一個成語, 輸入的成語會顯示在標籤控制項中, 使用者可以按鈕改變底色 字顏色和樣式. 設計一個可以計算銀行利息的程式 程式一開始, 先預設本金為 10000; 年利率為 2% 當使用者輸入本金或年利率時, 利息立刻算出並顯示 4. 設計一個計算圓形面積和圓柱體積的程式 程式一開始 圓形面積 按鈕不能使用, 半徑和高都預設為 10, 並顯示圓形面積 使用者輸入半徑和高後, 按 圓柱體積 按鈕後, 顯示圓柱體積大小, 並且 圓柱體積 按鈕改成不能使用 提示 2 : 圓形面積 = 半徑.14159 2 圓柱體積 = 半徑.14159 高 -9

Visual Basic 基礎必修課 -40