Step1 建立輸出入介面

Download Report

Transcript Step1 建立輸出入介面

第八章
方法
( Method)
本投影片僅供採用本書上課使用,非經同意,請勿散播或轉載。
1
8.1 方法
C# 2010 程式語言所有的程式
都撰寫在類別內。
 Visual
 方法即為函數、函式或程序,在不同
程式語言有不同
稱呼。
2
方法的特點:
1. 方法擁有自已的名稱,用 C# 識別字來命名。
2. 方法內所宣告的變數是屬區域變數,不同方法
內所宣告的變數彼此互不相關,有效範圍侷限
在該方法內。
4. 不同方法內是允許使用相同區域變數名稱。
5. 方法具有特定功能,程式碼簡單明確,可讀性高
且易除錯和維護。
3
VC# 2010 提供的方法依特性分三大類:
1.
2.
3.
系統提供的方法
使用者自訂的方法
事件 (Event)
4
8.2 亂數物件
8.2.1 Random 亂數物件的使用

語法:
Random 物件名稱 = new Random();
例
Random rnd = new Random();
5
一. Next() 方法

亂數物件 的 Next方法可傳回介於某個範圍
的亂數值。
語法1:
rnd1.Next();
語法2:
rnd1.Next(n1);
語法3:
rnd1.Next(n1, n2);
6
[例]
產生 3~14 間的五個亂數,並顯示在 label1
標籤控制項上面。
Random rnd = new Random();
label1.Text = "";
for (int i = 1; i <= 5; i++)
{
label1.Text += "第" + i.ToString() + "個亂數: “
+rnd.Next(3,15).ToString() + "\n";
}
7
二. NextDouble 方法

語法:
rnd1.NextDouble();
[例] 產生 rnd 亂數物件,使用 NextDouble 方法
傳回 0.0~1.0 間的亂數,最後將 0.0~1.0 間的
亂數指定 給 d 浮點變數。
Random rnd = new Random();
double d = rnd.NextDouble();
8
9
Step1 建立輸出入介面
程式碼請參閱 P8-7至P8-7頁
10
8.2.2 控制項陣列的應用
程式中建立圖片控制項陣列步驟:
Step1
在表單上建立名稱為 pic1~pic3 三個圖片控制項。
Step2
宣告並建立名稱為 arrPic 的圖片控制項陣列,
PictureBox[] arrPic = new PictureBox[4];
Step3
將名稱為 pic1~pic3 圖片控制項分別指定給建立的
控制項陣列中 arrPic[1]~arrPic[3] 三個陣列元素
arrPic[1] = pic1 ; arrPic[2] = pic2 ; arrPic[3] = pic3;
11
Step4 將指定圖片顯示在圖片控制項上面。
用 for 迴圈改變陣列索引值,註標當對應骰子檔名,
可將 1.jpg~3.jpg 骰子圖分別指定給 arrPic[1]~arrPic[3]
陣列元素的 Image 屬性
for(int i=1 ; i<arrPic.Length; i++)
{
arrPic[i].Image = Image.FromFile(Convert.ToString(i) + ".jpg");
}
12
13
Step1 建立輸出入介面
程式碼請參閱 P8-13至P8-14頁
14
馬上練習
修改上述範例,新增一個名稱為 txtInput
文字方塊可讓使用者進行投注,若按
鈕即可進行擲骰子。
擲骰子所得到的點數與 txtInput 的 Text
屬性值相同時即出現對話方塊並顯示 ”中獎”
訊息。
15
8.3 自訂方法
方法是類別中的一個成員,是使用者應
程式需求而自行定義,在C/C++一般稱
為「函式」。
 程式中欲使用的自訂方法,都必須在程
式中事先定義,在程式中透過呼叫敘述
來呼叫。

16
8.3.1 如何定義方法

定義方法時需對該方法的名稱做命名、定義呼叫
該方法需傳入哪些資料及傳回值的資料型別,
在該方法主體內編寫相關程式碼。
語法:

[private | public | protected | static] 傳回值型別 方法名稱([引數串列])
{
(方法主體)
[return 運算式 ;]
}
17
8.3.2 如何呼叫方法
程式中一個已定義(編寫)好自訂方法,視需求
使用下面方式呼叫自訂函式:
方法1:
方法名稱([引數串列]);
方法2:
變數 = 方法名稱([引數串列]);
18
[例1]
19
[例2]
20
程式碼請參閱 P8-21至P8-22頁
21
Step1 建立輸出入介面
22
23
8.4 傳值呼叫與參考呼叫
8.4.1 傳值呼叫 (Call By Value)

只將實引數傳給虛引數,不用將資料回傳

若方法主體內虛引數的值改變,回到原呼叫
處時並不會改變原來實引數的值。
24
程式碼請參閱 P8-26至P8-27頁
25
8.4.2 參考呼叫(Call By Reference)

方法中的虛引數與實引數若宣告為ref,表引數
傳遞方式設為參考呼叫。

所謂「參考呼叫」就是呼叫程式的實引數與
被呼叫方法的虛引數兩者佔用同一位址的記憶體,

在做參數傳遞時,呼叫程式中的實引數是將自己
本身的記憶體位址傳給被呼叫程式的虛引數。
26
程式碼請參閱 P8-29至P8-30頁
27
8.5 共用事件
8.5.1 使用屬性視窗加入共用事件
將 button2~button3 兩個按鈕的 Click 事件都指到
button1_Click() 事件處理函式,操作方式:

Step1
先在程式編碼視窗撰寫好 button1_Click() 事件處理函式
的程式碼,當作共用事件。
private void button1_Click(object sender, EventArgs e)
{
}
28
Step2
將 button2 的 Click 事件指到 button1_Click() 事件
- 在表單中點選 button2 按鈕成為作用控制項
- 移動滑鼠到「屬性」視窗中點選工具列中的
圖示鈕,切換到事件清單。
事件
- 點選 Click 事件,由下拉鈕清單中選取 button1_Click
事件處理函式當作共用事件。
29
操作方式:
30
STEP3
操作方式同上一步驟,將 button3 的 Click 事件也
指到 button1 _Click() 事件處理函式。
31
8.5.2 在程式執行階段加入自訂共用事件

若要在執行過程中,增加自訂共用事件到指定的物件事件。

語法:
物件.事件 += new EventHandler(事件處理函式);
[例] 允許 button2 及 button3 按鈕的 Click 事件,
使用 button1_Click 的事件處理函式。
button2.Click += new EventHandler( button1_Click) ;
button3.Click += new EventHandler( button1_Click) ;
32
8.5.3 sender 引數

要確定哪個物件觸動共用事件,可用 sender.Equals 判斷。
[例] button1 和 button2 共用一個事件處理函式:
 按 button1 按鈕,label1 顯示「快樂」。
 按 button2 按鈕, label1顯示「Happy」。
寫法:
private void button1_Click(object sender, EventArgs e)
{
if (sender.Equals(button1))
{
label1.Text = "快樂";
}
else
{
label1.Text = "Happy";
}
}
33
private void button1_Click(object sender, EventArgs e)
{
label1.Text = btnHit.Text;
}
34
程式碼請參閱 P8-29至P8-30頁
35
Step1 建立輸出入介面
程式碼請參閱 P8-36至P8-37頁
36
8.6 方法間陣列的傳遞
37
38
Step1 建立輸出入介面
程式碼請參閱 P8-40至P8-41頁
39
40
Step1 建立輸出入介面
程式碼請參閱 P8-43至P8-44頁
41
Take a break …….
42