Presentation is loading. Please wait.

Presentation is loading. Please wait.

Ch 08 陣列 視窗程式設計.

Similar presentations


Presentation on theme: "Ch 08 陣列 視窗程式設計."— Presentation transcript:

1 Ch 08 陣列 視窗程式設計

2 前言 變數增加造成命名困擾,且程式變得冗長不易維護。 Dim score1, score2, score3 ….. As Integer score1 = 98 : score2 = 85 : score3 = 76 …… 陣列可將同性質資料集中來存放。 如儲存成績,宣告一個 score(9) 陣列。陣列中要存放 多少同學成績,在宣告陣列時小括號內指定: 語法: int score(9) 如宣告 score 為整數陣列,存放 score(0) ~score(9) 共十位同學的成績。

3 陣列的宣告及存取 使用時機是當需處理多筆同性質資料時,可用陣列中 的陣列元素來取代多個同性質的變數。
陣列需先經過宣告才能使用,因宣告陣列時,編譯器 會依照所宣告陣列資料型別和元素多寡,在記憶體中 保留連續位址給該陣列使用。 陣列經過編譯後便可知道  陣列在記憶體中的位置。  陣列大小、含有多少個元素。  每個元素是屬於哪種資料型別。 2019/4/11

4 陣列的宣告及初值設定 陣列宣告 [例1] Dim score(9) As Integer
2019/4/11

5 宣告並設定初值 例1 宣告陣列名稱為 sname 的字串陣列,宣告並設定初值為: sname(0)= “張三”、sname(1)= “李四”、sname(2)= “王五” Dim sname() As String = {“張三”, “李四”, “王五”} ‘正確 例2 宣告陣列並給予初值,設定陣列大小: Dim sname(2) As String = {“張三”, “李四”, “王五”} ‘ 錯誤 2019/4/11 省略

6 宣告陣列時未設陣列元素的初值: - 數值陣列預設為 0, - 字串陣列預設為空字串。
宣告陣列時未設陣列元素的初值: - 數值陣列預設為 0, - 字串陣列預設為空字串。 宣告陣列時未用 As 指定陣列資料型別,將此陣列資料型別視為 物件(Object)。 物件資料型別的陣列,其元素允許混和不同資料型別 的資料。如下面敘述未用 As 宣告屬合法宣告: Dim score() = {"張三丰", 98, True} Dim score() As Object = {"張三丰", 98, True}

7 使用迴圈存取陣列的內容 陣列索引可為整數常值、整數變數或整數運算式。 存取陣列值可用迴圈,這是使用陣列最大好處。
如計算10位同學計概平均分數,用陣列配合For…Next 迴圈更改陣列的註標就可快速完成。寫法:

8 For Each Next 若無法預知陣列大小時,可改用 For Each … Next 迴圈。
For Each … Next 迴圈與 For …Next 迴圈類似, 前者適用於陣列或集合。 For Each …Next 迴圈會依序存取陣列或集合中的 每一個元素值,語法:

9 先指定 bcc 陣列的初值,再用 For … Each 求出成績總和。
例 For Each …Nex 範例 先指定 bcc 陣列的初值,再用 For … Each 求出成績總和。 Dim bcc() As Integer={ 98, 85, 76, 88 } Dim sum As Integer = 0 For Each score In bcc sum += score Next 2019/4/11

10 2019/4/11

11 Step1 建立輸出入介面 2019/4/11

12 2019/4/11

13 2019/4/11

14 多維陣列 一維陣列陣列 (One-Dimensional Array) 宣告時若其索引(註標)只有一個,維度為1。
二維陣列」(Two-Dimensional Array) 宣告時若有兩個索引,維度為2。 多維陣列 (Multi-Dimensional Array) 若陣列的維度是二維以上。 2019/4/11

15 陣列的維度 2019/4/11

16 上表二維陣列宣告和初值設定分開 Dim score (2,1) As Integer score(0,0)=98: score(0,1)=100 ‘ 第0列 score(1,0)=85: score(1,1)=90 ’ 第1列 score(2,0)=76: score(2,1)=65 ‘ 第2列 宣告並同時設定初值: Dim score( , ) As Integer ={{98,100},{85,90},{76,65}} 省略註標 第0列 第1列 第2列 2019/4/11

17 Dim quota(2, 4) As Object = { {“北區”, 20000, 30000, 40000, 50000}, _
宣告並同時設定初值 Dim quota(2, 4) As Object = { {“北區”, 20000, 30000, 40000, 50000}, _ {“中區”, 25000, 35000, 45000, 55000}, _ {“南區”, 60000, 70000, 80000, } _ } 2019/4/11

18 陣列的上界 陣列索引的下界固定由 0 開始,上界是可變動。 Ubound 函式 用來取得陣列指定維度的索引值上界。
returnValue = UBound(arrayName[,dimension])  第1個參數是要查詢上界的陣列名稱  第2個參數是要查詢陣列的第幾個維度。  省略第2個參數,預設取第1維度的陣列索引值 上界。 2019/4/11

19 例 求下列宣告陣列各維度的上界 Dim score(3, 24, 16)
例 求下列宣告陣列各維度的上界 Dim score(3, 24, 16) max1 = UBound(score , 1)  傳回score第1維度索引值上界為3 max2 = UBound(score , 2)  傳回score第2維度索引值上界為24 max3 = UBound(score , 3)  傳回score第3維度索引值上界為16 max4 = UBound(score )  傳回score第1維度索引值上界為3 2019/4/11

20 2019/4/11

21 2019/4/11

22 2019/4/11

23 2019/4/11

24 將本實作所顯示的報表修改為如下圖的樣式。
2019/4/11

25 排序與搜尋 陣列中的資料通常是無規律。 陣列元素能依序排列,可縮短資料查詢時間。
Array.Sort()方法,不用寫複雜的敘述區段, 就可將一維陣列內的元素做遞增或遞減排序。 此方法只支援一維陣列,無法處理多維陣列,且一次最多能同時處理兩個一維陣列。 Array.Sort(arrayName1[, arrayName2]) 2019/4/11

26 下面 score 陣列經過 Array.Sort() 方法排序後,下列元素值會由小到大排列, Dim score() As Integer={95, 75, 85}
Array.Sort(score) 排序前:score(0)=95、score(1)=75、score(2)=85 排序後:score(0)=75、score(1)=85、score(2)=95 2019/4/11

27 [例2] 已知張三成績為85、李四成績為95、王五成績為75,試使用兩個陣列分別存放姓名和成績,並由小到大做遞增排列: Dim name() As String={“張三”, ”李四”, ”王五”} Dim score() As Integer= {85,95,75} Array.Sort(score, name)

28 陣列的反轉 語法:Array.Reverse(arrayName)
Array.Sort() 方法只能將一維陣列由小而大做遞增排序。 若希望陣列由大而小做遞減排序,使用Array.Reverse() 方法將排序過的陣列做反轉,便將陣列由大而做小 遞減排序。 排序時若兩個陣列相關連時,執行陣列反轉時 要記得也要將兩個陣列同時做 Reverse() 反轉 否則會發生錯誤。 語法:Array.Reverse(arrayName) 2019/4/11

29 例1 將 score 陣列由大而小做遞減排序 Dim score() As Integer= {85,95,75}
Array.Sort(score) Array.Reverse(score) 例2 已知張三成績為85、李四成績為95、王五成績為75, 試使用兩 個陣列分別存放姓名和成績,並由大到小做 遞減排列: Dim sname() As String = {“張三”, ”李四”, ”王五”} Dim score() As Integer= {85, 95, 75} Array.Sort(score,sname) Array. Reverse(score) Array. Reverse(sname) 2019/4/11

30 陣列的搜尋 Array.IndexOf() 方法 會由一維陣列中找尋要查詢的資料是否存在? - 若找到相符的陣列元素時,傳回該元素在陣列中 第1個相符的索引值; - 若找不到,傳回 -1。 語法: returnValue=Array.IndexOf(arrayName,value[,startIndex[,count]]) 2019/4/11

31 index_num1 = Array.IndexOf(score,76)  傳回值為2
Dim score() As Integer={98,85,76,88,76} index_num1 = Array.IndexOf(score,76)  傳回值為2 index_num2 = Array.IndexOf(score,76,3)  傳回值為4 2019/4/11

32 2019/4/11

33 Step1 建立輸出入介面 2019/4/11

34 2019/4/11

35 2019/4/11

36 2019/4/11

37 陣列的常用方法 IsArray函式 用來檢查某變數是不是陣列? 若變數是陣列,傳回 True;否則傳回 False。
語法:returnValue = IsArray(arrayName) 例 Dim name(4) As String Dim score() As Integer={98,85,76,88,76} Dim average As Integer Dim returnValue1, returnValue2, returnValue3 As Boolean returnValue1 = IsArray(name)  傳回值為True returnValue2 = IsArray(score)  傳回值為True returnValue3 = IsArray(average)  傳回值為False 2019/4/11

38 Dim score1() As Integer={98,85,76}
Length 屬性 Length 屬性可取得陣列的長度(陣列元素數量) Length 屬性只能取得 陣列的總長度,若要取得其中 維度的長度,要用 GetLength方法。 語法:returnValue = arrayName.Length 例 Dim score1() As Integer={98,85,76} Dim score2( , ) As Integer={{98,85,76,66},{88,75,96,99}} Dim returnValue1, returnValue2 returnValue1 = score1.Length  傳回值為3,score1 數量是3。 returnValue2 = score2.Length  傳回值為8,score2 數量是8。 2019/4/11

39 GetLength 方法 此方法可取得陣列中指定維度的長度(陣列元素數量) 。
此方法只有一個參數,就是陣列的維度,第 1 個維度 為0,第 2 個維度為 1,依此類推。傳回值為整數值。 語法:returnValue = arrayName.GetLength (dimension) 例 Dim score1() As Integer={98,85,76} Dim score2( , ) As Integer={{98,85,76,66},{88,75,96,99}} Dim returnValue1, returnValue2, returnValue3 As Integer returnValue1 = score1.GetLength(0)  傳回值為3,陣列數量是3。 returnValue2 = score2.GetLength(0)  傳回值為2,第1維數量是2 returnValue3 = score2.GetLength(1)  傳回值為4,第2維數量是4 2019/4/11

40 用來將一個陣列的元素複製到另一個陣列中,且可指定複製的索引起點。 語法:
CopyTo 方法 用來將一個陣列的元素複製到另一個陣列中,且可指定複製的索引起點。 語法: sourceArray.CopyTo(targetArray, startIndex) 2019/4/11

41 CopyTo 方法 [簡例] 將score1陣列中三個元素拷貝到score2陣列中, 由索引值為1的位置開始放起;
Dim score1() As Integer={10,20,30} Dim score2(4) As Integer score1.CopyTo(score2,1) 執行前: score1(0)=10、score1(1)=20、score1(2)=30 score2(0)=0、score2(1)=0、score2(2)=0、score2(3)=0 score2(4)=0 執行後: score1(0)=10、score1(1)=20、score1(2)=30 score2(0)=0、score2(1)=10、score2(2)=20、sore2(3)=30 score2(4)=0 2019/4/11

42 returnArray = Filter(sourceArray, match, include, compare)
用來從一維字串陣列中,尋找含有指定字串 的陣列元素時。 因 Filter 函式會將搜尋結果傳到一個字串陣列中,使用前要先宣告一個字串陣列,來接 Filter 函式傳回結果。如搜尋不到相符陣列元素時,傳回值為空陣列。 語法: returnArray = Filter(sourceArray, match, include, compare) 2019/4/11

43 簡例 Dim source_array() As string={“That”, ”is”, ”A”, ”cake”} Dim return_array1(), return_array2(), return_array3() As string return_array1 = Filter(source_array,”a”, True, CompareMethod.Text) return_array2 = Filter(source_array,”a”, True, CompareMethod.Binary) return_array3 = Filter(source_array,”a”, False, CompareMethod.Binary) 執行結果  return_array1 陣列元素分別為:“That”、”A”、”cake” 因使用 CompareMethod.Text 所以 ”A” 和 ”a” 會被搜到。  return_array2陣列元素分別為: “That”、”cake” 因使用 CompareMethod.Binary 所以只有 ”a” 會被搜到。  return_array3陣列元素分別為: “is”、”A” 因使用 False參數,所以只會搜尋不含 ”a” 的元素。

44 Array.Clear 方法 此方法可將陣列中的指定元素內容清除 數值資料清成0,文字資料清成空字串。
陣列雖被清除,但陣列元素仍佔有記憶體空間。 Dim score() As Integer={98,85,76,88} Array.Clear(score,1,2) 執行前: score(0)=98、score(1)=85、score(2)=76、score(3)=88 執行後: score(0)=98、score(1)=0 、score(2)=0 、score(3)=88

45 Erase 敘述 Erase 方法可清除陣列,且將陣列從記憶體釋放。 Erase 敘述必須在程式執行階段使用。
語法:Erase arrayName 例 先宣告兩個陣列 score1與 score2,然後再刪除, 此時所佔記憶體也釋放。還可用 ReDim 敘述重新 宣告已刪除的陣列,重新宣告陣列雖名稱相同,但 已是一個全新陣列: Dim score1(30), score2(2,30,16) As Integer Erase score1, score2 ReDim score2(3,26,12)

46 ListBox 清單控制項 常用屬性 是一個文字項目清單,提供使用者由清單中選取一個 或多個項目。
1. Items屬性 Items屬性是ListBox控制項內所有項目的集合。 2. SelectedIndex屬性 Items集合中被選取項目的索引值,若選取第1個 項目則SelectedIndex屬性值為0,選第2個項目 則屬性值為1,依此類推。

47 3. SelectedItem屬性 ListBox清單控制項中被選取項目的文字內容。
4. MultiColumns屬性(預設值為False) 設定是否可多欄顯示,設為True,項目若超過 清單控制項高度時,會在清單內增加一欄,出現 水平捲軸,超過的項目會顯示在右邊欄位中。 5. Sorted屬性(預設值為True) 設定清單控制項中項目是否按照字母順序排列。 6. SelectionMode屬性(預設值為One) 設定清單控制項中選取項目的方式, - One只能選取一個項目。 - None(不能選取)、 - MultiSimple(能用 鍵做簡單的多重選取)、 - MultiExtended(能用 和 鍵做多重選取) ListBox.SelectionMode = SelectionMode.MultiExtended

48 在 ListBox 控制項中加入項目 欲在 ListBox 控制項中加入項目內容到清單中, 就要透過 Items 屬性。
項目主要是以字串為主,也可用物件型別做為 項目。

49 一. 在設計階段加入項目

50

51 二. 在程式執行階段加入項目-Add方法 使用 Add() 方法,將 newItem 項目加入到清單 Items 屬性最後。
語法: ListBox.Items.Add (newItem) 例  如在 ListBox1清單控制項最後加上『彰化縣』項目: ListBox1.Items.Add ("彰化縣")  將 sname 陣列中六個陣列元素逐一指定給 lstName 清單控制項的 Items(集合)屬性。 For i = 0 To 5 lstName.Items.Add(sname(i)) Next

52 二. 在程式執行階段加入項目-Insert方法
Insert() 方法可將項目插入清單中 Items 屬性指定位置。 Insert 方法與 Add方法類似,只多一個索引值參數, 可將項目插入到指定索引值的位置,Items 屬性索引值 是由0為起始值。 語法:ListBox.Items.Insert (index, newItem) 例 ListBox1 清單控制項原有項目為『台北市』、『台北縣』 『新竹縣』,如想在『台北縣』和『新竹縣』 中間插入『桃園縣』項目: ListBox1.Items.Insert(2, "桃園縣")

53 三. 在程式執行階段加入項目- AddRange方法
將所有項目依序宣告為陣列初值,然後再用 AddRange 方法將陣列內容指定給清單控制項的 Items 屬性。 使用此方法,如清單中已有項目存在,陣列內容由清單 項目最後面開始加入: 語法:ListBox.Items.AddRange(itemArray) 例 宣告一個 city 陣列並設定初值為『台北市』、『台北縣』、『桃園縣』、『新竹縣』,然後將 city 整個陣列值指定給 ListBox1 清單控制項,其寫法如下: Dim city() As String = {"台北市","台北縣","桃園縣","新竹縣"} ListBox1.Items.AddRange(city)

54 Items 屬性常用的屬性與方法 一. Count屬性 程式執行要得知 ListBox 控制項中項目的數量, 可用 Items.Count 屬性取得。 例 在程式執行階段,取得ListBox1控制項中所有的項目文字內容,逐行置入itemArray字串變數中。 Dim itemArray As String = “” For i = 0 To ListBox1.Items.Count - 1 itemArray &= ListBox1.Items(i) & vbNewLine Next i 由於 Count 是項目的總數,而索引值是由0開始,迴圈 中的 Count 必須減 1 才是最後一個項目的索引值。

55 二. Remove和RemoveAt 方法 要將既有的項目從清單中移除,有兩種方法可用。 Remove 方法 - 直接指定要刪除的項目內容, RemoveAt 方法 - 以指定索引值來刪除項目:
語法1:ListBox.Items.RemoveAt(index) 語法2:ListBox.Items.Remove(item) 例 ListBox1.Items.RemoveAt (4) ‘ 刪除第5個項目 ListBox1.Items.Remove (“台中縣”) ‘ 刪除「台中縣」項目 三. Clear方法 Remove 和 RemoveAt 方法可刪除指定項目內容, 如要一次清除全部項目,就可用 Clear 方法: 語法:ListBox.Items.Clear()

56 四. SetSelected 方法 由程式來設定項目的選取或取消選取,就可用 SetSelected 方法。
語法:ListBox.SetSelected(index, Boolean)  index 指定要設定選取項目的索引值。  Boolean 指定項目是選取或取消選取(值為False)。 例 ListBox1.SetSelected(2, True) ‘ 第3個項目選取 ListBox1.SetSelected(3, False) ‘ 第4個項目不選取 五、 ClearSelected 方法 若要一次取消所有項目選取,用 ClearSelected 方法 語法:ListBox.ClearSelected()

57 六. CopyTo 方法 若想將 ListBox 控制項中所有項目複製到一個陣列 可用 CopyTo方法。 語法:
ListBox.Items.CopyTo(arrayName,index) 例 Dim itemArray(ListBox1.Items.Count - 1) As String ListBox1.Items.CopyTo(itemArray, 0)

58 七. FindString 和 FindStringExact 方法
FindString 和 FindStringExact 方法用來搜尋 Items 集合是否有指定字串的項目。 FindString 方法可尋找清單控制項中,以指定開頭字串 的項目 FindStringExact 方法可尋找清單控制項中,與指定 字串完全相符的項目。 這兩個方法找到的都是第一個符合項目,傳回值為一個 整數值,代表尋找到符合項目的索引值,當找不到符合 項目時,傳回值為-1。 語法1:returnValue=ListBox.FindString(string,index 語法2:returnValue=ListBox.FindStringExact(string,index) 2019/4/11

59 6.6.4 SelectedIndices 和SelectedItems 屬性
當 ListBox 控制項的 SelectionMode 屬性值為MultiSimple、MultiExtended時,被選取項目不只一個。 SelectedIndices 和 SelectedItems 屬就像 Items 屬性是集合(陣列),多重選取項目集合。 一. SelectedIndices屬性 取得所有被選取項目的索引值,傳回值是一 個集合, 而集合數量可用 SelectedIndices.Count 屬性取得。 二. SelectedItems屬性 取得所有被選取的項目內容,傳回值是一個集合, 而這集合數量可用 SelectedItems.Count 屬性取得。

60 要取得 SelectedIndices 和SelectedItems 屬性集合, 可用陣列 For Each…Next 迴圈,將集合內的內容逐一 讀取。

61 Do While ListBox1.SelectedIndices.Count > 0
例2 將 ListBox1 中所有選取的項目刪除 Do While ListBox1.SelectedIndices.Count > 0 ListBox1.Items.RemoveAt(ListBox1.SelectedIndices(0)) Loop Do While ListBox1.SelectedItems.Count > 0 ListBox1.Items.Remove(ListBox1.SelectedItems(0)) 2019/4/11

62 ListBox 控制項常用的事件 當選取 ListBox 清單控制項中某項目時,該項目的SelectedIndex 屬性和 Selected Item 屬性隨之改變, 可藉由兩個屬性得知選取哪個項目。 當 SelectedIndex 屬性和 SelectedItem 屬性改變時, 會觸動 SelectedIndexChanged 事件。 可將選取項目相對應的敘述寫在 SelectedIndexChanged 事件程序中,是 ListBox 控制項的預設事件。

63 6.7 ComboBox 下拉式清單控制項 下拉式清單控制項和清單控制項的功能類似。
差異處下拉式清單控制項包含一個文字方塊,可供輸入 清單中項目。是由 TextBox 與 ListBox 結合的控制項。 下拉式清單控制項需按下拉清單按鈕才會出現清單, 點選完畢會自動彈回,佔用表單面積較小。

64 6.7.1 ComboBox 控制項常用的屬性 一. DropDownStyle屬性 可設定下拉式清單的外觀,有三種屬性值:
 DropDownList 文字方塊不可輸入資料,需按 下拉鈕由顯示清單中選取。  Simple 文字方塊中可輸入資料。清單 項目直接全部顯示沒下拉鈕。

65 6.7.1 ComboBox 控制項常用的屬性 二. MaxDropDownItems 屬性 可設定下拉清單可顯示項目數量(預設值為8), 當項目數量超過設定值,自動顯示垂直捲軸。 三. DroppedDown 屬性 可在執行階段判斷下拉式清單是否顯示。 True顯示; False隱藏。 四. Text屬性 可取得下拉式清單控制項上面文字方塊文字內容。 五. MaxLength 屬性 可設定下拉式清單控制項中文字方塊,可輸入最多 字元數。如屬性值為 3,表最多只能輸入三個字。

66 6.7.2 ComboBox 控制項常用的事件 ComboBox 控制項常用的事件有二:
 Text Changed 事件 當下拉式清單控制項的選項改變時,文字方塊中 的文字內容也會隨之改變。  SelectedIndexChanged 事件 (預設事件) 選項改變同時,因選取項目索引值改變會觸動。 可將選取項目時要處理的程式碼寫在該 事件程序中。

67

68 Step1 建立輸出入介面 2019/4/11

69 選取 lstdeskPC 清單控制項,在屬性視窗點選 Items 屬性設定初值:
2019/4/11

70 選取 cbxCRT 下拉式清單控制項,在屬性視窗 點選 Items 屬性設定初值:

71

72

73 6.8 CheckedListBox 核取清單控制項
核取清單控制項是一個比較特別的控制項 用法與 ListBox 清單控制項完全相同 只是它的清單項目前面是核取方塊,使用者可逐 項目勾選或不勾選。

74 6.8.1 CheckedListBox 控制項常用的屬性
一. CheckOnClick屬性 (預設為 False) 設定控制項的勾選方法。 預設勾選方法需在核取方塊內用滑鼠點選, 或在項目文字上快按兩次才能勾選或不勾選。 若為 True 時,只要點選項目文字就可改變核取 方塊勾選狀態。 二. ThreeDCheckBoxes屬性 (預設值為True) 可設定核取方塊以立體或平面外觀顯示。 True:立體外觀顯示;False:以平面外觀顯示。 三. CheckedIndices屬性 是所有被勾選項目的索引值集合。

75 控制項的 SelectedItems 和 SelectedIndices 屬性 指的是點選的項目。
四. CheckedItems 屬性 是所有被勾選項目文字內容集合。 控制項的 SelectedItems 和 SelectedIndices 屬性 指的是點選的項目。 要取得勾選的情形要看 CheckedIndices 和CheckedItems 屬性 [例] 將 CheckedListBox1 核取清單控制項中勾選的 項目加到 ListBox1 清單控制項中。 For Each x In CheckedListBox1.CheckedItems ListBox1.Items.Add(x) Next For Each x In CheckedListBox1.CheckedIndices ListBox1.Items.Add(chkLstBox.Items(x))

76 一. SetItemChecked方法 SetItemChecked方法可以用來設定指定索引值項目的勾選狀態,其語法如下:
第一個參數是指定要設定項目的索引值。 第二個參數為布林值若值為True表示勾選,False表示不勾選。

77 6.8.2 CheckedListBox 控制項常用的方法
一. SetItemChecked 方法 用來設定指定索引值項目的勾選狀態。 CheckedListBox.SetItemChecked(index , Boolean)  第一個參數是指定要設定項目的索引值  第二個參數為布林值: True:勾選, False:表不勾選。 例1 將 CheckedListBox1 控制項的第三個項目設為勾選。 CheckedListBox1.SetItemChecked(2 ,True) 2019/4/11

78 GetItemChecked方法 GetItemChecked方法可得知項目的勾選狀態,該方法的傳回值為一個布林值,True表示項目被勾選,False表示未勾選。其語法如下:

79 二. GetItemChecked 方法 可得知項目的勾選狀態,傳回值為布林值 True:表被勾選, False:表未勾選。
語法: returnValue = GetItemChecked(index) 例1 若 CheckedListBox1 控制項的第二個項目被勾選, 就設 money 變數為 1000。 If CheckedListBox1.GetItemChecked(1)=True Then money = 1000 End If 例2 檢查 CheckedListBox1 核取清單控制項中的項目 是否被勾選,若勾選將該項目加入 ListBox1。 For i = 0 To CheckedListBox1.Items.Count - 1 If CheckedListBox1.GetItemChecked(i) = True Then ListBox1.Items.Add(CheckedListBox1.Items(i)) Next i 2019/4/11

80 CheckedListBox 控制項事件 一. SelectedIndexChanged事件(預設事件) 是當滑鼠點選任何一個項目或核取方塊時,都會 觸發此事件。 核取方塊是否被勾選沒直接關係,但核取方塊 被勾選時也會在觸動本事件。 二. ItemCheck事件 是當項目的核取方塊勾選狀態變更時所觸動的事件。當核取方塊被勾選或取消勾選時,都會觸動這個事件,而 SelectedIndexChanged 事件也會隨後被觸動。

81 [簡例] 在核取清單中允許勾選多個字型樣式來改變字型樣式

82 如何設定字型? 將 label1 標籤控制項字型設為:標楷體、斜體、 大小 20。

83 如何重設標籤控制項的字型樣式?  當粗體字型樣式被點選,將勾選變未勾選或未勾選變勾選: Label1.Font = new Font(Label1.Font , Label1.Font.Style Xor FontStyle.Bold)  當斜體字型樣式被點選,將勾選變未勾選或未勾選變勾選: Label1.Font = new Font(Label1.Font , Label1.Font.Style Xor FontStyle.Italic)  當加底線字型樣式被點選,將勾選變未勾選或未勾選變勾選: Label1.Font = new Font(Label1.Font, Label1.Font.Style Xor FontStyle.Underline)  加刪除線字型樣式被點選,將勾選變未勾選或未勾選變勾選 Label1.Font = new Font(Label1.Font, Label1.Font.Style XorFontStyle.Strikeout) 2019/4/11

84 2019/4/11

85

86 Step1建立輸出入介面 2019/4/11

87

88


Download ppt "Ch 08 陣列 視窗程式設計."

Similar presentations


Ads by Google