FOREWORD 推薦序 Visual Basic Visual Basic 1. 2. 3. 4. 5. 6. Visual Basic.NET Framework Visual Studio 2011/02/28 III
Visual Basic 2010 INTRODUCTION 本書導讀! Visual Basic 2010 Visual Basic 2010 Visual Studio Visual Basic Windows Form IV
Visual Basic 1 2 3 4 V
Visual Basic 2010 SUPPORTING MEASURE 學習資源說明 Visual Basic 2010 1. (1) < \ CopyExample.bat> <C:\VB2010> (2) (A) Visual Basic 2010 < >.sln (B).sln 2. VS2010 VS2010 Studio 3. 4. 16 5. VI
CONTENTS 本書目錄 01 Visual Basic 2010 Visual Basic 2010 1.1 Visual Basic 2010...1-2 1.1.1...1-2 1.1.2 Visual Basic Express 2010...1-4 1.2...1-6 1.2.1 Windows Form...1-6 1.2.2...1-7 1.3...1-7 1.3.1 Write WriteLine Read...1-8 1.3.2...1-9 1.3.3... 1-11 1.3.4... 1-11...1-13 02 2.1...2-2 2.1.1...2-2 2.1.2...2-3 2.2...2-4 VII
Visual Basic 2010 2.2.1...2-4 2.2.2...2-5 2.2.3...2-6 2.2.4...2-6 2.2.5...2-6 2.2.6...2-7 2.2.7...2-7 2.3...2-9 2.3.1...2-9 2.3.2...2-10 2.3.3 Write WriteLine ReadLine...2-10 2.3.4... 2-11 2.4...2-13 2.4.1...2-14 2.4.2...2-14 2.4.3...2-15 2.4.4...2-16 2.4.5...2-17 2.4.6...2-18 2.4.7...2-19 2.4.8...2-20 2.5...2-21 2.5.1...2-21 2.5.2...2-22 2.5.3...2-24...2-25 03 VIII
3.1...3-2 3.1.1 If Then...3-2 3.1.2 If Then Else...3-4 3.1.3 IIf()...3-5 3.1.4 If Then ElseIf...3-6 3.1.5 Select Case...3-9 3.1.6 Choose()...3-12 3.2...3-13 3.2.1 For Next...3-13 3.2.2 For Next...3-15 3.2.3 For Next...3-16 3.2.4...3-18 3.2.5...3-20 3.2.6 Continue Do...3-22 3.2.7...3-23 3.3 Try Catch Finally...3-24 3.3.1...3-25 3.3.2...3-28...3-30 04 4.1...4-2 4.1.1...4-2 4.1.2...4-3 4.1.3...4-4 4.1.4 For Each Next...4-5 4.1.5...4-7 IX
Visual Basic 2010 4.1.6...4-9 4.2... 4-11 4.2.1... 4-11 4.2.2...4-12 4.3...4-14 4.3.1 System.Array...4-14 4.3.2. ArrayList...4-18...4-21 05 5.1...5-2 5.1.1...5-2 5.1.2...5-3 5.2...5-5 5.2.1...5-5 5.2.2...5-5 5.2.3...5-7 5.2.4...5-8 5.3...5-9 5.3.1...5-9 5.3.2... 5-11 5.3.3...5-13 5.4...5-17 5.5...5-18 5.6...5-21 5.6.1...5-21 5.6.2...5-22 5.6.3...5-22 X
5.7...5-27 5.7.1...5-28 5.7.2...5-29 5.7.3...5-30...5-33 06 (Class) (Child Class) (Parent Class) 6.1...6-2 6.1.1...6-2 6.1.2...6-2 6.1.3...6-3 6.1.4...6-4 6.1.5...6-6 6.2...6-8 6.2.1...6-8 6.2.2...6-10 6.2.3...6-10 6.3... 6-11 6.3.1... 6-11 6.3.2...6-13 6.3.3 Me...6-14 6.3.4...6-16 6.3.5...6-17 6.4...6-19 6.5...6-21 6.5.1...6-21 6.5.2...6-24 XI
Visual Basic 2010 6.5.3...6-25 6.5.4...6-27 6.6...6-28 6.6.1...6-29 6.6.2...6-31 6.7...6-32...6-37 07 Windows Form Visual Basic 7.1...7-2 7.1.1 Windows Form...7-2 7.1.2 Windows Form...7-3 7.2 Visual Basic...7-4 7.2.1...7-4 7.2.2...7-5 7.2.3...7-5 7.2.4...7-7 7.2.5...7-9 7.2.6...7-10 7.3 Visual Basic... 7-11 7.3.1... 7-11 7.3.2...7-17 7.3.3...7-22 7.3.4...7-23...7-28 XII
08 Form Label LinkLabel TextBox RichTextBox MaskedTextBox Button 8.1...8-2 8.1.1...8-2 8.1.2...8-5 8.1.3...8-6 8.1.4...8-6 8.2... 8-11 8.2.1 Label... 8-11 8.2.2...8-12 8.2.3 Label...8-14 8.2.4 LinkLabel...8-16 8.2.5...8-17 8.2.6 LinkLabel...8-18 8.3...8-20 8.3.1 TextBox...8-20 8.3.2...8-22 8.3.3 TextBox...8-23 8.3.4 RichTextBox...8-24 8.3.5 MaskedTextBox...8-26 8.3.6 MaskedTextBox...8-27 8.4...8-29 8.4.1 Button...8-29 8.4.2 Button...8-30 8.5...8-31 8.5.1 MessageBox.Show...8-31 8.5.2 MessageBox.Show...8-34 8.5.3 MsgBox...8-36...8-39 XIII
Visual Basic 2010 09 Visual Basic 9.1...9-2 9.1.1 RadioButton...9-2 9.1.2 RadioButton...9-4 9.1.3 CheckBox...9-5 9.1.4 ListBox...9-7 9.1.5 ListBox...9-10 9.1.6 CheckedListBox...9-12 9.1.7 ComboBox...9-12 9.2...9-15 9.2.1 GroupBox...9-15 9.2.2 Panel...9-18 9.3...9-19 9.3.1 MonthCalendar...9-20 9.3.2 MonthCalendar...9-23 9.3.3 DateTimePicker...9-25 9.3.4 Timer...9-28 9.4...9-30 9.4.1 PictureBox...9-30 9.4.2 PictureBox...9-32 9.4.3 ImageList...9-34 9.4.4 ImageList...9-36...9-39 10 XIV
10.1...10-2 10.1.1 MenuStrip...10-2 10.1.2 ContextMenuStrip...10-12 10.2...10-16 10.2.1 ToolStrip...10-16 10.2.2 StatusStrip...10-16 10.3...10-22 10.3.1...10-22 10.3.2...10-24 10.3.3...10-28...10-35 11 Visual Basic 11.1... 11-2 11.1.1... 11-2 11.1.2... 11-3 11.2... 11-8 11.2.1 OpenFileDialog... 11-8 11.2.2 SaveFileDialog... 11-9 11.3... 11-12 11.3.1 PrintDocument... 11-12 11.3.2 PageSetupDialog... 11-13 11.3.3 PrintPreviewDialog... 11-14 11.3.4 PrintDialog... 11-15... 11-29 XV
Visual Basic 2010 12 KeyDown KeyPress KeyUp KeyAscii KeyPress 12.1...12-2 12.1.1 KeyPress...12-2 12.1.2 KeyDown KeyUp...12-6 12.2...12-10 12.2.1 Click DoubleClick...12-10 12.2.2 MouseDown MouseUp MouseMove...12-10 12.3...12-14 12.3.1...12-16 12.3.2...12-17 12.3.3...12-19...12-24 13 Graphics Windows Media Player 13.1...13-2 13.1.1...13-2 13.1.2...13-2 13.1.3...13-5 13.2...13-9 13.2.1...13-9 13.2.2... 13-11 13.2.3...13-13 13.2.4...13-16 XVI
13.2.5...13-19 13.3...13-36 13.3.1...13-36...13-42 14 Visual Basic 2010 14.1 DataSet...14-2 14.2...14-4 14.2.1 Access...14-4 14.2.2 Access...14-14 14.3 SQL Server 2008 Expresss...14-19 14.3.1 SQL Server 2008 Express...14-20 14.4 (Relation)...14-25 14.4.1...14-25 14.5 DataAdapter...14-31 14.5.1 DataAdapter...14-31 14.6 BindingSource...14-35 14.6.1 BindingSource...14-35 14.6.2 BindingSource...14-36 14.7 BindingNavigator...14-38 14.8 (DataBinding)...14-39 14.8.1...14-39 14.8.2 (DataBinding)...14-41 14.9...14-43 14.9.1...14-43 14.10 DataAdapter Command...14-53 14.10.1 DataAdapter...14-54 14.10.2 DataAdapter Command...14-55...14-60 XVII
Visual Basic 2010 15 15.1...15-2 15.2...15-2 15.2.1 DirectoryInfo...15-2 15.2.2 Path...15-7 15.3 --FileInfo...15-9 15.4...15-17 15.4.1 FileStream...15-17 15.4.2 StreamReader...15-21 15.4.3 StreamWriter...15-27 15.5...15-30...15-35 16 XVIII
本書目錄 專題三 配對記憶遊戲 專題四 打地鼠遊戲 16.1專題導引...16-2 16.1.1 專題導引一... 16-2 16.1.2 專題導引二... 16-3 16.1.3 專題導引三... 16-3 16.1.4 專題導引四... 16-4 16.1.5 專題導引五... 16-5 16.2 專題一 音階辨識遊戲... 16-6 16.2.1音階辨識遊戲分析... 16-8 16.2.2 洗牌...16-8 16.2.3 使用 MediaPlayer 播放器... 16-9 16.2.4 音階辨識遊戲完整程式碼... 16-9 16.3 專題二 拼圖遊戲... 16-12 16.3.1 專題分析和程式說明... 16-15 16.4 專題三 配對記憶遊戲... 16-21 16.4.1 專題分析和程式說明... 16-23 16.5 專題四 打地鼠遊戲... 16-29 16.5.1 專題分析和程式說明... 16-31 附錄 內建類別 A.1 Random 亂數類別... A-2 A.2 Math 數學類別... A-5 A.3 String 字串類別... A-8 A.4 DateTime 日期時間類別... A-14 XIX
12 Keys (KeyCode) 0~9 Keys.D0~Keys.D9 48~57 A~Z Keys.A~Keys.Z 65~90 F1~F12 Keys.F1~Keys.F12 112~123 Keys.Left~Keys.Right 37 39 Keys.Up~Keys.Down 38 40 Enter Space Keys.Return Keys.Space 13 32 Alt Ctrl Keys.Menu Keys.ControlKey 18 17 Shift Esc Keys.ShiftKey Keys.Escape 16 27 KeyDown KeyUp Label Timer Label ASCII [Alt] [Ctrl] [Shift] [0] [F1] MessageBox (KeyDown1.sln) Label ASCII [Alt] [Ctrl] [Shift] MessageBox! 12-7
Visual Basic 2010 程式設計速學對策 按 下 [0] 數 字 鍵 或 [F1] 鍵 出 現 MessageBox 訊息視窗顯示 小章 魚吃午飯! 程式碼 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 12-8 Dim count As Integer = 1 ' 設定圖片編號從 1 開始 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Taco.SizeMode = PictureBoxSizeMode.StretchImage Ball.SizeMode = PictureBoxSizeMode.Zoom Ball.Image = Image.FromFile("..\..\image\Ball.png")' 氣泡 Timer1.Start() 'Taco.BringToFront() End Sub Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick If (count > 6) Then count = 1 End If Taco.Image = Image.FromFile("..\..\image\taco0" & count. ToString() & ".png") ' 小章魚動畫圖檔 count += 1 End Sub Private Sub Form1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown lblshow.text = " 按鍵是 " & e.keycode.tostring() & ", ASCII=" & Convert.ToString(e.KeyValue) If (e.alt Or e.control Or e.shift) Then
12 23 MessageBox.Show(" 小章魚休息一會兒!") 24 End If 25 If (e.keycode = Keys.D0 Or e.keycode = Keys.F1) Then 26 MessageBox.Show(" 小章魚吃午飯!") 27 End If 28 Select e.keycode 29 Case Keys.Up 30 Taco.Top -= 5 31 Case Keys.Left 32 Taco.Left -= 5 33 Case Keys.Right 34 Taco.Left += 5 35 End Select 36 End Sub 37 38 Private Sub Form1_KeyUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyUp 39 Dim OverArea As Integer = 20 ' 重疊區域的準確度 40 If (Math.Abs(Taco.Left - Ball.Left) < OverArea And Math.Abs(Taco.Top - Ball.Top) < OverArea) Then 41 MessageBox.Show(" 小章魚回家了!") 42 End If 43 If (Taco.Top + Taco.Height < 10) Then 44 MessageBox.Show(" 小章魚迷路了!") 45 End If 46 End Sub 12-18 以 Timer 輪流更換 Taco 的圖片 (taco01.prg~toca06.png), 以組成動畫的效果 20-36 輸入任意按鍵後, 均會觸發 KeyDown 事件 21 顯示該按鍵的列舉常數值和掃描碼 22-24 示範以 e 參數的屬性, 比對是否按下指定的按鍵, 例如 e.alt=true 代表按下 [Alt] 鍵 25-27 示範以 e.keycode=keys.d0 的屬性, 比對是否按下 [0] 按鍵 28-35 按 按鍵, 會移動小章魚 38-46 當按鍵放開, 均會觸發 KeyUp 事件 40-42 如果小章魚移動到氣泡的上方並將近重疊時, 即設定為安全回家 計算重疊的方法是比對左上角的座標是否在 OverArea 的範圍內, 本例的 OverArea 設為 20, 如果將 OverArea 調小, 則重疊比對會更精準 43-45 如果小章魚游過頭, 會出現 小章魚迷路了! 訊息視窗 12-9
16 167 If note >= 3 Then ' 最多只允許提示 3 次 168 btnnote.enabled = False 169 End If 170 End Sub 150-152 設定第二張牌不允許按 按鈕 154-157 將 24 牌都翻開 160-164 將尚未配對完成的牌再蓋牌 ( 已配對的牌仍會翻開 ) 166-169 最多只允許提示 3 次 10. Timer1 Interval 1000 Start 172 Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick 173 timer += 1 174 lbltime.text = "Time : " & timer.tostring() 175 End Sub 16.5 10 50 16-29
Visual Basic 2010 程式設計速學對策 執行結果 ( 打地鼠遊戲.sln) 按下 Play 按鈕開始計時 60 秒 遊 戲 進 行 中 顯 示 Playing 時 間 終 了 可 按下 RePlay 重玩 以 鐵 鎚 擊 中 地 鼠 得 到 10 分 以鐵鎚擊中精靈則會扣 50 分 設計畫面 1 lbltime 顯示時間 2 1 4 3 2 按 btnplay 遊戲開始 3 lblscore 顯示得分 4 MediaPlayerMusic MediaPlayerHammer MediaPlayerHit MediaPlayerLoss 四個音 效播放器 5 5 六個地鼠洞 PictureBox1~ PictureBox6 6 6 TimerCount 計 時 器 計 算遊戲時間 註 MediaPlayer 並不是工具箱預設的控制項 請參考 13.3 節在工具箱的任何一 個控制項上按右鍵 於快顯功能表上 選擇 選擇項目 在 選擇工具箱項目 \ COM 元件 勾選 Windows Media Player 後按 確定 鈕 設定完成後 工具箱即會出現 Windows Media Player 控制項 16-30
16 16.5.1 1. 3 Dim seed As Integer = DateTime.Now.Millisecond ' 以時間產生亂數種子 4 Dim r As Random = New Random(seed) ' 產生亂數 5 Dim pic(5) As PictureBox ' 六隻地鼠 6 Dim timer(5) As Timer ' 控制何時顯示地鼠 7 Dim timerdelay(5) As Timer ' 控制何時隱藏地鼠 8 Dim score As Integer ' 分數 9 Dim picshow(5) As Boolean ' 記錄地鼠是否出洞 10 Dim rabit(5) As Boolean ' 記錄是否是精靈 11 Dim count As Integer ' 時間 2. Media Player (MediaPlayerMusic MediaPlayerHammer MediaPlayerHit MediaPlayerLoss) 13 MediaPlayerMusic.settings.playCount = 99 ' 背景音樂連續播放 14 MediaPlayerMusic.settings.volume = 50 ' 聲音稍為小一些 50% 15 MediaPlayerMusic.URL = "sound\music.mp3" 16 MediaPlayerMusic.Ctlcontrols.stop() ' 暫停播放, 等按 Play 後才播放 17 MediaPlayerMusic.Visible = False ' 不要顯示 18 19 MediaPlayerHammer.settings.playCount = 1 ' 鐵鎚敲下 20 MediaPlayerHammer.settings.volume = 100 ' 最大聲 21 MediaPlayerHammer.URL = "sound\hammer.mp3" 22 MediaPlayerHammer.Ctlcontrols.stop() ' 暫停播放, 等按 Play 後才播放 23 MediaPlayerHammer.Visible = False ' 不要顯示 25~35 MediaPlayerHit 打中地鼠 MediaPlayerLoss 打中精靈設定程式碼省略 3. BackColor Transparent 物件.BackColor=Color.Transparent 4. picturebox1~picturebox6 pic() 38 pic(0) = PictureBox1 : pic(1) = PictureBox2 39 pic(2) = PictureBox3 : pic(3) = PictureBox4 40 pic(4) = PictureBox5 : pic(5) = PictureBox6 16-31
Visual Basic 2010 pic(0) ~pic(5) pic(i).image ( ) pic(1) pic(1).image = Image.FromFile("image\ 地鼠.png") 5. 5/6 1/6 p (0<=p<=5) p=5 1/6 rabit() picshow() rabit(i)=true rabit(i)=false ; picshow(i) = False Tag 41 ' 設六個地洞中, 以亂數 p 判斷, 若 p=5 為精靈, 否則為地鼠 42 For i = 0 To 5 43 ' 以亂數 p 判斷, 若 p=5 為精靈, 否則為地鼠 44 Dim p As Integer = r.next(0, 6) ' 以亂數 p 產生精靈 45 If p = 5 Then ' 如果亂數 p=5, 設為精靈 46 rabit(i) = True ' 記錄 rabit(i)=true 是精靈 47 Else 48 rabit(i) = False 'rabit(i)=false 表示是地鼠 49 pic(i).image = Image.FromFile("image\ 地鼠洞.png")' 地鼠洞 50 picshow(i) = False 'picshow(i)=false 表示地鼠或精靈尚未出洞 51 pic(i).tag = i ' 記錄編號 52 pic(i).backcolor = Color.Transparent ' 背景設透明 53 End If 54 Next? rabit() rabit=false rabit=true ( ) 6. (hammer) ico 153 Me.Cursor = New Cursor("image\ 鎚子 1.ico") ' 顯示鐵鎚游標 16-32