Microsoft PowerPoint - ch6.pptx

Similar documents
untitled

untitled

IsPostBack 2

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

Chapter 16 集合

投影片 1

Microsoft PowerPoint - VB14.ppt

VB程序设计教程

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

untitled

Microsoft Word - GUI design.doc

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

Visual Basic D 3D

Microsoft PowerPoint - ch2.ppt

untitled

用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應

Microsoft PowerPoint - Chap03.ppt [相容模式]

星星排列 _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

untitled

Advanced ASP.NET Controls

untitled

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

<4D F736F F F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074>

Microsoft PowerPoint - asp07.ppt

Microsoft PowerPoint - 09_CommonComponents.pptx

Microsoft Word - AEL CH07

Microsoft Office SharePoint Server MOSS Web SharePoint Web SharePoint 22 Web SharePoint Web Web SharePoint Web Web f Lists.asmx Web Web CAML f

Spyder Anaconda Spyder Python Spyder Python Spyder Spyder Spyder 開始 \ 所有程式 \ Anaconda3 (64-bit) \ Spyder Spyder IPython Python IPython Sp

ActiveX Control

投影片 1

Microsoft PowerPoint - Chapter5

雲端 Cloud Computing 技術指南 運算 應用 平台與架構 10/04/15 11:55:46 INFO 10/04/15 11:55:53 INFO 10/04/15 11:55:56 INFO 10/04/15 11:56:05 INFO 10/04/15 11:56:07 INFO

Microsoft Word - ch04三校.doc

7 DataSet DataSet TableColumnDataSet DataSet NOTE DataSet DataAdapterDataSetDataAdapter DataSet DataSetDataSetDataSet NorthwindDataSet DataSet Dim Nor

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

<A4E2BEF7B4FAB8D5B3F8A F52322E786C7378>

Microsoft PowerPoint - 09.Android 程式設計-SQLite

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

Python a p p l e b e a r c Fruit Animal a p p l e b e a r c 2-2

建立Android新專案


投影片 1

Visual C# 2010 與 UML 開發實戰 C# 第 5 章物件導向基礎 C# C# 第 6 章資料與變數 C# 第 7 章判斷式與迴圈 C# 第 8 章陣列與集合 C# 第 9 章偵錯與例外狀況處理 Visual Studio 2010 C# try...catch ix

Microsoft PowerPoint - ch15_1.ppt

《大话设计模式》第一章

Microsoft PowerPoint - 第14章.ppt

Dynamic Layout in Android

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

多媒體應用 13 新增專案並完成版面配置 <ExMusic01> <activity_main.xml> ImageView ID imgplay ImageView ID imgstop ImageView ID imgfront TextView ID txtsong TextView ID t

投影片 1

Microsoft PowerPoint - ASP_NET_04

INTRODUCTION TO COM.DOC

2 4 WPF1 T I P 10 ) (XIII2) Aero Luna Royale Classic 4.1WPF Button (ContentControl) (ItemsControl) (RangeBase) Ink 4.1 System.Windows.Controls.Content

1: public class MyOutputStream implements AutoCloseable { 3: public void close() throws IOException { 4: throw new IOException(); 5: } 6:

Microsoft PowerPoint - 14Threads.ppt

untitled

mvc

新版 明解C++入門編

Microsoft PowerPoint - 11_EventHandle.pptx

視窗程式設計

1. 2. Flex Adobe 3.

Microsoft Word - Mail2000_SecurityPatch_

Web Form 表單與事件處理

投影片 1

Microsoft Word - App Inventor 2 的範例程式MoleMash.doc

epub83-1

Microsoft PowerPoint - 09_事件驅動.ppt

Microsoft PowerPoint - 07_WinProg.pptx

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

Microsoft Word - 01.DOC

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

ebook39-5

CC213

JavaIO.PDF

Microsoft PowerPoint - vb_net5

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

Visual C# 2005程式設計

ch02

untitled

2010年3月计算机等级考试四级网络工程师笔试

05855BB03.indd

Microsoft PowerPoint - vb_net4

全国计算机技术与软件专业技术资格(水平)考试

基于UML建模的管理管理信息系统项目案例导航——VB篇

Transcription:

.NET 程式設計入門 ( 使用 C#) 1

.NET 專案範本 2

檔案介紹 檔案 cs_form.sln cs_form.csproj cs_ form.exe Form1.cs Form1.resx assemblyinfo.cs cs_form.csproj.user csproj cs_form.suo App.ico 說明儲存方案中使用到那些檔案資料等資訊儲存專案中使用到那些檔案資料等資訊利用專案所編譯出來的執行檔儲存表單及程式碼相關資訊儲存表單中使用的相關資料描述組件的資訊專案目前編輯狀態記錄方案的編輯狀態應用程式圖示 3

方案總管 我們可以利用 [ 檢視 ] 中的 [ 方案總管 ] 來開啟方案總管視窗 圖示 功能說明切換到程式編輯視窗 切換到表單編輯視窗 重新整理 顯示所有檔案 打開屬性視窗 4

屬性視窗 在程式設計階段, 可以透過 [ 檢視 ] 中的 [ 屬性視窗 ] 來設定修改表單上各控制項的屬性值 圖示 功能說明 物件下拉選單 依屬性類型分類顯示 依屬性名稱排序顯示 顯示屬性視窗 顯示事件視窗 5

控制項 開啟 [ 檢視 ] 中的 [ 工具箱 ] 會列出常用控制項 要在表單中加入控制項的方式有二種 點選控制項後拖曳至表單上 連續點選控制項二下 重疊顯示二個控制項 可利用右鍵中的提到最上層或移到最下層來調整控制項顯示順序 6

表單及控制項常用屬性 外觀 Text 控制項的標題文字 BackColor 背景色 BackgroundImage 背景圖 Font 字型設定 ForeColor 前景色 行為 Enable 設定該控制項是否有作用 Visible 是否顯示該控制項 配置 Location 位置 ( 程式碼中可用 Left 及 Top 屬性設定 ) Size 大小 7

事件 在視窗程式設計中, 程式的執行流程是以使用者觸發的事件順序來決定 表單及控制項個別提供了許多不同的事件, 我們可以在不同的事件中撰寫不同的程式 當使用者觸發事件後, 程式的流程會立即跳至該事件內的程式區塊中執行 在事件視窗中, 點選事件名稱二下, 即可跳至程式碼編輯視窗該事件內的程式區塊 8

表單常用事件 Load 當表單被載入開啟時, 會執行此事件內的程式區段一次 Click 在表單上按下滑鼠左鍵, 會執行此事件內的程式區段一次 Resize 調整表單大小時, 會執行此事件內的程式區段一次 9

Label 控制項 Label 控制項主要是用來顯示文字 常用屬性 Text 設定要顯示的文字 TextAlign 設定文字顯示位置 Visible 是否顯示控制項 常用事件 Click 按一下時發生 MouseEnter 滑鼠經過 MouseLeave 滑鼠離開 10

實例探討 sample6-a1 a1 程式功能 猜謎語 程式內容 private void answerlb_click(object sender, System.EventArgs e) answerlb.text = " 灰熊厲害 "; } 11

課堂練習 sample6-b1 程式功能 猜謎語 當滑鼠移至題目上時, 題目的字改成 " 看解答 ", 當滑鼠移開後恢復成原本題目的文字 當使用者點選 " 看解答 " 時, 原本題目的文字變成解答 基本概念 利用 Click MouseEnter 及 MouseLeave 事件來完成 12

Button 控制項 Button 控制項提供按鈕功能 常用屬性 Text 設定要顯示的文字 TextAlign 設定文字顯示位置 Visible 是否顯示控制項 常用事件 Click 按一下時發生 MouseEnter 滑鼠經過 MouseLeave 滑鼠離開 13

實例探討 sample6-a2 a2 程式功能 設計結束視窗按鈕 設定表單上的 CancelButton 程式內容 private void closebtn_click(object sender, System.EventArgs e) Application.Exit(); } 14

TextBox 控制項 TextBox 控制項用以讓使用者輸入資料 常用屬性 Text 設定取得控制項中的文字 TextAlign 設定文字顯示位置 PasswordChar 輸入的資料以別的字元顯示 ReadOnly 文字是否允許修改 MaxLength 輸入文字最大寬度 MultiLine 允許多行輸入 ScrollBar 選擇要顯示的捲軸 15

課堂練習 sample6-b2 程式功能 登入系統 輸入帳號為 alice, 密碼為 bob 時, 顯示登入成功, 否則顯示資料錯誤 另設清除按鍵, 將輸入方塊的資料清除 基本概念 在 Click 事件中判斷使用者輸入的資料是否正確 16

Timer 控制項 Timer 控制項供計時及週期事件使用 常用屬性 Enable 是否啟動 Timer Interval Timer 事件發生週期 ( 千分之一秒 ) 常用事件 Tick 每隔 interval 設定時間執行一次 17

實例探討 sample6-a3 a3 (1) 程式功能 倒數計時 程式內容 private void startbtn_ Click(object sender, System.EventArgs e) timer1.enabled = true; countlb.text = counttb.text; Text; counttb.enabled = false; startbtn.enabled = false; } 18

實例探討 sample6-a3 a3 (2) 程式內容 private void timer1_tick(object sender, System.EventArgs ta e) countlb.text = (int.parse(countlb.text) - 1).ToString(); if(int.parse(countlb.text) ==0) timer1.enabled = false; } 19

課堂練習 sample6-b3 程式功能 閃爍提示文字 點選文字開始閃爍 再點選停止 基本概念 可利用定時更改 Label 控制項的 Visible 屬性達到閃爍效果 也可定時更改 Label 控制項的文字來達成 20

PictureBox 控制項 PictureBox 控制項供計時及週期事件使用 常用屬性 Image 設定顯示圖片 SizeMode 設定載入圖片擺放方式 Normal..圖片放在控制項的左上角 StretchImage t..圖片隨控制項大小伸縮 AutoImage..控制項隨圖片大小伸縮 CenterImage..圖片放在控制項正中央 21

課堂練習 sample6-b4 程式功能 紅綠燈 可設定紅燈綠燈及黃燈時間長度 基本概念 利用 Timer 來決定更換圖片時間 利用 MSDN 查詢程式執行中更換 PictureBox 圖片的方式 可能需要一個可供所有方法存取的欄位變數 22

MessageBox 類別 MessageBox 類別提供錯誤或警告訊息等的對話方塊, 以提醒使用者注意 Show 靜態方法 Show ( 訊息文字, 標題文字, 顯示按鈕, 圖示 ); Show (string, string, MessageBoxButtons, MessageBoxIcon) 23

MessageBox 類別 顯示按鈕 顯示按鈕列舉常數 MessageBoxButtons.OK MessageBoxButtons.OKCancel MessageBoxButtons.AbortRetryIgnore B 說明 確定 確定 取消 異常終止 重試 略過 MessageBoxButtons.YesNoCancel B 是 否 取消 MessageBoxButtons.YesNo MessageBoxButtons.RetryCancel 是 否 重試 取消 24

MessageBox 類別 圖示 圖示列舉常數 MessageBoxIcon.Asterisk MessageBoxIcon.Information MessageBoxIcon.Exclamation MessageBoxIcon.Warning MessageBoxIcon.Error MessageBoxIcon.Hand MessageBoxIcon.Stop MessageBoxIcon.Question MessageBoxIcon.None 圖示 無 25

MessageBox 類別 回傳值 呼叫 MessageBox.Show 方法時, 當使用者按下訊息方塊中其中一個按鈕時, 會回傳一個 DialogResult 列舉型別的回傳值 列舉型別回傳值按鈕 DialogResult.OK 1 確定 DialogResult.Cancel 2 取消 DialogResult.Abort 3 異常終止 DialogResult.Retry 4 重試 DialogResult.Ignore 5 略過 DialogResult.Yes 6 是 DialogResult.No 7 否 26

實例探討 sample6-a4 a4 (1) 程式功能 密碼設定 ( 限四碼 ) 程式內容 private void okbtn_click(object sender, System.EventArgs e) if(pwtb.text.length Text!= 4) MessageBox.Show(" 密碼設定限四位數!!", " 設定錯誤 ", MessageBoxButtons.OK, MessageBoxIcon.Error); else MessageBox.Show(" 密碼設定成功!!", " 設定完成 ", MessageBoxButtons.OK, MessageBoxIcon.Information); Application.Exit(); } } 27

實例探討 sample6-a4 a4 (2) 程式內容 private void exitbtn_click(object sender, System.EventArgs e) DialogResult result; result = MessageBox.Show( Show(" 確定離開!?", " 離開 ", MessageBoxButtons.OKCancel, MessageBoxIcon.Question); if(result == DialogResult.OK) Application.Exit(); it() else pwtb.focus(); } 28

GroupBox 控制項 GroupBox 控制項可將同性質的控制項框為群組, 使得控制項可藉以分門別類並讓畫面較為整齊有條理 常用屬性 Text 設定標題名稱 Controls 加入控制項所成的集合 29

RadioButton 控制項 RadioButton 控制項提供單選選項按鈕的功能 同一個表單中具有多組單選選項時, 可利用 GroupBox 或 Panel 來區隔 常用屬性 CheckAlign 設定選項按鈕顯示位置 Checked 按鈕是否選取 Text 顯示文字 常用事件 CheckedChanged Checked 屬性改變時發生 30

實例探討 sample6-a5 a5 (1) 程式功能 資料核對 利用 GroupBox 將 RadioButton 區分為二組 程式內容 private void exitbtn_click(object sender, System.EventArgs e) Application.Exit(); } 31

實例探討 sample6-a5 a5 (2) 程式內容 private void sendbtn_click(object sender, System.EventArgs e) string checkstr =" 您是 "+(sex1rb.checked? " 男生 ": " 女生 ") + ", 您的學歷為 "; foreach(radiobutton rb in educationgb.controls) if(rb.checked) checkstr += rb.text; MessageBox Show(checkStr " 資料核對 "); MessageBox.Show(checkStr, 資料核對 ); } 32

CheckBox 控制項 CheckBox 控制項提供複選核取方塊的功能 常用屬性 CheckAlign 設定核取方塊顯示位置 Checked 核取方塊是否選取 Text 顯示文字 ThreeState 設定為雙態或三態 CheckState 取得目前勾選狀況 常用事件 CheckedChanged Checked 屬性改變時發生 CheckStateChanged CheckState 屬性改變時發生 33

實例探討 sample6-a6 a6 (1) 程式功能 電腦採購 勾選需要配備立即更新總價 程式內容 34

實例探討 sample6-a6 a6 (1) private void monitorcb_checkedchanged(object sender, System.EventArgs ta e) int cost = monitorcb.checked? 12000: - 12000; totallb.text = (int.parse(totallb.text) + cost).tostring(); } 35

實例探討 sample6-a6 a6 (2) 程式內容 private void boxcb_checkedchanged(object sender, System.EventArgs e) int cost = boxcb.checked? Checked? 15000: -15000; totallb.text = (int.parse(totallb.text) + cost).tostring(); } 36

實例探討 sample6-a6 a6 (2) private void mousecb_checkedchanged(object Ch d( sender, System.EventArgs e) int cost = mousecb.checked? 500: -500; totallb.text =(int (int.parse(totallb.text) + cost).tostring(); } 37

實例探討 sample6-a6 a6 (3) 程式內容 private void keyboardcb_checkedchanged(object sender, System.EventArgs e) int cost = keyboardcb.checked? 500: -500; totallb.text = (int.parse(totallb.text) + cost).tostring(); } 38

課堂練習 sample6-b5 程式功能 電腦採購 CPU RAM 及週邊各有三種類可挑選 CPU 及 RAM 為必備元件, 若沒採購跳出錯誤訊息視窗 計算全部費用 基本概念 可利用迴圈讀取 GroupBox 中的元件簡化程式碼 39

ListBox 控制項 (1) ListBox 控制項提供文字項目清單供使用者選擇 常用屬性 Items 元素內容 (ListBox.ObjectCollection 類別 ) MultiColumn 設定多欄顯示 ColumnWidth 多欄顯示時每一個欄位寬度 40

ListBox 控制項 (1) SelectionMode 設定清單可選取數目 None 不能選取 One 單選 MultiSimple 複選 ( 點一下選取, 再點一下取消 ) MultiExtended 複選 ( 可利用 Ctrl Shift 及拖曳選取 ) 41

ListBox 控制項 (2) 常用屬性 SelectedItem 取得被選取項目 SelectedItems 取得被選取項目集合 SelectedIndex 取得選取項目索引 SelectedIndices 取得所有選取項目索引 常用事件 SelectedIndexChange 清單中選取項目改變時發生 42

相關類別 ListBox.ObjectCollection 類別 常用屬性 Count 計算清單項目個數 常用方法 Add 新增項目至清單 Remove 刪除清單中某項目 Clear 清除全部項目 用法 Ex.. listbox1.items.add("alice"); Alice 43

實例探討 sample6-a7 a7 (1) 程式功能 設定啟用功能 程式內容 private void Form1_Load(object sender, System.EventArgs e) } string[] funcstr = " 檔案 "," 編輯 "," 檢視 "," 專案 "," 建置 "," 偵錯 "," 工具 "," 視窗 "," 說明 "}; foreach(string str in funcstr) alllb.items.add(str); 44

實例探討 sample6-a7 a7 (2) 程式內容 private void addbtn_click(object sender, System.EventArgs e) if(alllb.selecteditem == null) } MessageBox.Show(" 尚未選取欲新增功能!!", " 錯誤 ", MessageBoxButtons.OK, MessageBoxIcon.Warning); else enablelb.items.add(alllb.selecteditem); lllb l t dit alllb.items.remove(alllb.selecteditem); } 45

實例探討 sample6-a7 a7 (3) 程式內容 private void removebtn_click(object sender, System.EventArgs e) if(enablelb.selecteditem == null) MessageBox.Show(" 尚未選取欲刪除功能!!", " 錯誤 ", MessageBoxButtons.OK, MessageBoxIcon.Warning); else alllb.items.add(enablelb.selecteditem); enablelb.items.remove(enablelb.selecteditem); } } 46

ComboBox 控制項 ComboBox 控制項提供下拉式選單功能, 為 ListBox 控制項的延伸 常用屬性 Text 取得設定文字 MaxLength 使用者可輸入最大長度 MaxDropDownItems 下拉部份一次顯示最大項目個數 DropDownStyle DropDown 可編輯, 箭頭按鈕顯示清單 DropDownList 不可編輯, 箭頭按鈕顯示清單 Simple 可編輯, 清單永遠顯示 47

實例探討 sample6-a8 a8 (1) 程式功能 地址輸入 程式內容 private void addresstb_ Enter(object sender, System.EventArgs e) if(addresstb.text == " 輸入地址 ") addresstb.text Text =""; } 48

實例探討 sample6-a8 a8 (2) 程式內容 private void area1cb_selectedindexchanged(object sender, System.EventArgs e) area2cb.items.clear(); if(area1cb.selectedindex == 0) area2cb.items.add(" 信義區 "); } area2cb.items.add(" 大安區 "); area2cb.text = area2cb.items[0].tostring(); } else area2cb.items.add(" 汐止市 "); area2cb.items.add(" 板橋市 "); } area2cb.text = area2cb.items[0].tostring(); 49

課堂練習 sample6-b6 程式功能 書籍分類清單 小說射鵰英雄傳神鵰俠侶倚天屠龍記 電腦 C# 程式設 十天學會 資料庫程式 計入門 JAVA 設計 食譜韓式料理日式料理台式料理 基本概念 利用 ComboBox 及 ListBox 完成 50

TreeView 控制項 TreeView 控制項提供樹狀結構檢視功能 常用屬性 Nodes 子節點所成的集合 (TreeNodeCollection 類別 ) SelectedNode 選取節點 CheckBoxes 顯示核取方塊 PathSeperator 傳回路徑的字串分隔字元 常用事件 AfterSelect 變更選取後 51

相關類別 TreeNodeCollection 類別 Count 屬性 取得節點數 Add 方法 增加節點至該點子節點中 Remove 方法 刪除節點 ( 傳入 TreeNode) TreeNode 類別 Text 節點顯示文字 Remove 方法 刪除節點 Nodes 子節點所成的集合 FullPath 取得從根樹狀節點通往目前樹狀節點的路徑 52

實例探討 sample6-a9 a9 (1) 程式功能 簡易資料夾檢索 程式內容 private void Form1_Load(object sender, System.EventArgs e) string[] drives = Directory.GetLogicalDrives(); } foreach(string drive in drives) diskcb.items.add(drive); updatetreeview(diskcb.text); 53

實例探討 sample6-a9 a9 (2) 程式內容 private void diskcb_ SelectedIndexChanged(object sender, System.EventArgs e) updatetreeview(diskcb.text); Text); } private void updatetreeview(string disk) try dirtv.nodes.clear(); string[] dirs = Directory.GetDirectories(disk); 54

實例探討 sample6-a9 a9 (3) 程式內容 int i=0; foreach(string dir in dirs) } dirtv.nodes.add(dir); try string[] subdirs = Directory.GetDirectories(dir); foreach(string subdir in subdirs) dirtv.nodes[i].nodes.add(subdir); } catch } i++; } } catch} 55

課堂練習 sample6-b7 程式功能 班級資料表 可新增班級 重複新增不予動作 基本概念 利用 TreeView 顯示班級資訊 56

ListView 控制項 ListView 控制項提供項目清單檢視功能 常用屬性 Columns 設定包含欄位 Items 清單項目內容 (ListView.ListViewItemCollection 類別 ) View 清單檢視方式 CheckBoxes 顯示核取方塊 GridLines 顯示格線 57

相關類別 (1) ListView.ListViewItemCollection 類別 Count 屬性 取得項目個數 Add 方法 新增項目 Remove 方法 移除指定項目 Clear 方法 清除所有項目 ListViewItem 類別 SubItems 屬性 子項目 (ListViewItem.ListViewSubItemCollection 類別 ) Text 屬性 設定取得項目內容 58

相關類別 (2) ListViewItem.ListViewSubItemCollection ti 類別 Count 屬性 取得子項目個數 Add 方法 新增子項目 Remove 方法 移除指定子項目 Clear 方法 清除所有子項目 ListViewItem.ListViewSubItem 類別 Text 屬性 設定取得子項目內容 59

實例探討 sample6-a10 a10 (1) 程式功能 學生名單 程式內容 private void clearbtn_click(object sender, System.EventArgs e) } idtb.text Text = ""; nametb.text = ""; studentlv.items.clear(); 60

實例探討 sample6-a10 a10 (2) 程式內容 private void addbtn_click(object sender, System.EventArgs e) if(idtb.text!= "" && nametb.text!= "") ListViewItem item = new ListViewItem(); item.subitems.add(idtb.text); Text); item.subitems.add(nametb.text); studentlv.items.add(item); } } 61

課堂練習 sample6-b8 程式功能 成績表 可新增科目成績資料 計算總平均 基本概念 利用 ListView 來完成 62

執行緒 我們可以把執行緒想像為一段程式碼區段 一個應用程式至少會在一個以上的執行緒中執行.NET 內建提供多執行緒支援, 可藉由執行緒類別成員所提供的功能來控制執行緒的行為 Thread 類別提供執行緒支援, 可引用 Thread 類別提供執行緒支援, 可引用 System.Threading 命名空間來使用該類別 63

Thread 類別 (1) 建構式 public Thread( ThreadStart start ); 常用屬性 Name 取得或設定執行緒名稱 IsAlive 取得目前執行緒執行狀況 常用方法 Start 執行該執行緒 Suspend 使執行緒暫停 Resume 使暫停的執行緒繼續執行 64

Thread 類別 (2) 靜態方法 Sleep 暫停執行緒一段時間 靜態屬性 CurrentThread 取得目前執行緒 用法 ThreadStart mythreadstart = new ThreadStart( 方法成員名稱 ); Thread mythread = new Thread(myThreadStart); 65

實例探討 sample6-a11 a11 (1) 程式功能 遊戲半成品,Thread 類別測試 程式內容 class box public static bool stopflag = false; private System.Windows.Forms.Label mylb; public box(system.windows.forms.label LB) p ( y ) mylb = LB; } 66

實例探討 sample6-a11 a11 (2) 程式內容 public void action() Random rnd = new Random(); } do 50; 100; } mylb.top += rnd.next(0,2) == 0? 50: - if(mylb.top <= 0) mylb.top += 100; else if(mylb.top >= 400) mylb.top -= Thread.Sleep(500); }while(!stopflag); 67

實例探討 sample6-a11 a11 (3) 程式內容 private void startbtn_click(object sender, System.EventArgs e) startbtn.enabled = false; box mybox1 = new box(box1lb); box mybox2 = new box(box2lb); Thread box1thread = new Thread(new ThreadStart(myBox1.action)); Thread box2thread = new Thread(new ThreadStart(myBox2.action)); box1thread.name = "box1"; box2thread.name = "box2"; 68

實例探討 sample6-a11 a11 (4) 程式內容 box1thread.start(); Thread.Sleep(200); box2thread.start(); } private void endbtn_click(object sender, System.EventArgs e) box.stopflag = true; Application.Exit(); } 69

實例探討 sample6-a12 a12 (1) 程式功能 利用單一執行緒執行高運算量計算 程式內容 private void computebtn_click(object sender, System.EventArgs e) computing(); } private void computing() try resultlb.text = } (garbage(int.parse(numtb.text))).tostring(); 70

實例探討 sample6-a12 a12 (2) 程式內容 catch resultlb.text = "--"; } } private int garbage(int num) if(num <= 4) return num; else return garbage(num-1)-garbage(num-2) +garbage(num-3)-garbage(num-4); b ( } 71

課堂練習 sample6-b9 程式功能 利用多執行緒修改 sample6-a12 a12 範例程式 使其在運算過程中, 視窗介面仍可自由操控 基本概念 引用命名空間 System.Threading, 利用 Thread 類別產生一條新的執行緒來執行運算方法內容 72

安裝與部署 (1).NET 提供安裝和部署專案, 我們可以透過此專案快速產生視窗應用程式的安裝程式 73

安裝與部署 (2) 在檔案系統中, 我們可以設定檔案與捷徑要分別安裝在那些地方 使用者的桌面 設定欲安裝至桌面上的檔案 使用者的程式功能表 設定欲安裝至程式集的檔案 應用程式資料夾 設定欲安裝至 Program Files 料夾的檔案 資 74

安裝與部署 (3) 在資料夾上點選右鍵, 選擇 [ 加入 ][ 檔案 ] 後, 即可選擇欲加入檔案 75

安裝與部署 (4) 在已加入的檔案名稱上點選右鍵, 即可為該檔案建立捷徑 76

安裝與部署 (5) 我們可以將專案的執行檔及欲連結的資料庫檔案加入至應用程式資料夾中 建立主要執行檔捷徑, 將捷徑加入至使用者桌面及使用者的程式功能表資料夾中 建置專案後, 即會產生 Setup.Exe 安裝檔案 77