Microsoft PowerPoint - 08_IOInterface.pptx

Similar documents
(Microsoft Word - wes _\246p\246\363\250\317\245\316LED\277O\305\343\245\334\252\254\272A.doc)

untitled

投影片 1

附 錄

Microsoft PowerPoint - 11_EventHandle.pptx

Microsoft PowerPoint - 07_WinProg.pptx

(Microsoft Word - wes _\246p\246\363\250\317\245\316watchdog\250\276\244\356\265{\246\241\267\355\276\367.doc)

投影片 1

VB程序设计教程

Microsoft PowerPoint - 09_CommonComponents.pptx

CHAPTER VC#

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

X6-04_How_do_I_write_a_com_port_communicate_program_of_XPAC_tc

投影片 1

Microsoft Word - ch05.doc

Microsoft Word - ch doc

untitled

untitled

untitled

untitled

05855BB03.indd

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

Microsoft PowerPoint - VB5

untitled

Web Form 表單與事件處理

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

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

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

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

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

IsPostBack 2

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

第 4 章 表單與程式設計

新・解きながら学ぶJava

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

ch02

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

第 3 章 表單設計

Microsoft Word - ch doc

Microsoft Word - ch06.doc

Microsoft Word - AEL CH07

Visual Basic D 3D

Microsoft PowerPoint - VB14.ppt

Microsoft PowerPoint - C_Structure.ppt

投影片 1

untitled

Chapter 16 集合

untitled

AutoCAD 用戶如何使用 ArchiCAD

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

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

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

untitled

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

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

FETnet - Acer Iconia Tab  (A500 Wi-Fi 版) 平板電腦操作指南


ASP.NET MVC Visual Studio MVC MVC 範例 1-1 建立第一個 MVC 專案 Visual Studio MVC step 01 Visual Studio Web ASP.NET Web (.NET Framework) step 02 C:\M

untitled

05857AB....A.indd

CHAPTER 1

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

Microsoft Word - 第3章.doc

PowerPoint 簡報

Microsoft PowerPoint - ASP_NET_04

第一章 章标题-F2 上空24,下空24

Microsoft PowerPoint - vb_net4

untitled

Microsoft PowerPoint - 18_Event.pptx

封面-12

Apple iPad Wi-Fi + 3G 平板電腦操作指南

馬孝先

iziggi

Microsoft Word doc

¥¼©R¦W-3

Microsoft PowerPoint - vb.net2.ppt

Excel VBA Excel Visual Basic for Application

使用手冊

untitled

Microsoft Word - 01.DOC

Microsoft Word - GUI design.doc

( )... 5 ( ) ( )

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

Advanced ASP.NET Controls

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

(Microsoft PowerPoint - \245\250\266\2606)

Oxford iSolution下載及安裝指南

<img>

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 ->

1. 2. Flex Adobe 3.

Microsoft Word - ACI chapter00-1ed.docx

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

Microsoft Word - 02.doc

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

IT Essentials 5

(Microsoft PowerPoint - ch10.ppt [\254\333\256e\274\322\246\241])


epub83-1

Object-Oriented Programming, Mid-term Test, 11/21/2000

Transcription:

第八章 表單輸出入介面設計 8.1 Form 常用的屬性 8.2 Form 常用的事件 8.3 Label 和 LinkLabel 標籤控制項 8.4 TextBox 文字方塊控制項 8.5 Button 按鈕控制項 8.6 MessageBox.Show 方法 備註 : 可依進度點選小節

8.1 Form 常用的屬性 表單 (Form) 是視窗應用程式中最重要的容器 (Container) 之一 它可容納各種控制項 表單和控制項有些屬性是自己所特有, 有些是彼此擁有 每個屬性都有其預設值 不隨意更動預設值以免發生無法預測的情形 Visual C# 2008 兩種方式選取屬性 : 1 在屬性視窗點選分類圖示 2 在屬性視窗點選按字母順序圖示 2

1. Text 屬性 設定標題欄上面的文字 由於 Visual C# 2008 將目前被點選的表單當作用表單, 在程式中以 this 代替目前作用的表單名稱 Form1 程式設定 : this.text = " 我的表單 "; 3

2. ForeColor/BackColor 屬性 ForeColor BackColor 屬性分別用來設定表單的前景色和背景色 Visual C# 2008 所建立的控制項具有繼承的特性如 ForeColor 屬性值的變更會影響在表單新建立後控制項的字體顏色 程式設定 : 將目前作用表單的前景色設成淺藍色 this.forecolor = Color.Aqua; 4

3. Font 屬性 Font 屬性可設定表單的字型, 和 ForeColor 屬性一樣會影響設定後新建立控制項的字型 當在 Font 屬性上按一下, 可看到 Font 的預設值是新細明體, 大小 9 pt 5

另種方式 6

程式設定表單的字型為 : 標楷體 大小為 24 樣式為 粗體, 寫法 : this.font = new Font(" 標楷體 ", 24, FontStyle.Bold); 字體種類字體大小字體樣式 7

4. BackgroundImage/BackgroundImageLayout 屬性 BackgroundImage 用來設定表單的背景圖片 預設是空白 可配合 BackgroundImageLayout 屬性來配置背景圖 預設值為 Tile, 表背景圖比表單小時, 以貼磁磚方式佈滿整個表單 若載入的背景圖比表單大, 希望能以目前表單大小顯示整張背景圖, 設為 Stretch 程式設定 : this.backgroundimage = new Bitmap("C:\\CSharp\\pic2.bmp"); this.backgroundimagelayout = ImageLayout.Tile; 8

設定圖檔方式 : 1. 匯入專案資源檔 2. 指定本機資源 9

清除圖檔 10

5. FormBorderStyle 屬性 ( 預設值 :Sizable) 用來設定表單視窗的邊框樣式, 其屬性值有 : 1 None: 無邊框 大小固定大小固定 無標題欄無標題欄 2 FixedSingle: 單線邊框 大小固定大小固定 有標題欄有標題欄 3 Fixed3D: 立體邊框 大小固定大小固定 有標題欄有標題欄 4 FixedDialog: : 單線邊框 無法調整大小無法調整大小 標題欄只有關閉鈕 5 Sizable: 立體邊框 可調整大小可調整大小 有標題欄 ( 預設值 ) 6 FixedToolWindow: 單線邊框大小固定 標題欄只有結束鈕 7 SizableToolWindow: 單線邊框 可調大小可調大小 標題欄只有結束鈕 11

6. Enabled 屬性設定表單中的控制項是否有作用 True: 有作用 ;False: 無作用 7. StartPosition 屬性 ( 預設值 :WindowDefaultLocation) 設定表單開啟時顯示的位置, 其值有 : 1 Manual( 手動 ) 2 CenterScreen: 置於螢幕中央 3 WindowDefaultLocation; 預設位置 4 WindowDefaultBounds: 系統預設位置和大小 5 CenterParent: 父視窗中央 12

13

8. Location Top Left 屬性 1 StartPosition 屬性設為 Manual( 手動 ) 時, 才能透過 Location 屬性變更表單顯示的位置 2 Location 屬性有兩個子屬性 X 和 Y, 分別代表 X- 座標和 Y- 座標, 設計階段可輸入 (100,50) 直接更改表單位置, 也可按 Location 前面的展開鈕, 直接更改 X 和 Y 值 14

3Top Left 屬性 可在設計或程式執行時設定表單位置 - Top 屬性 : 是指表單上緣到螢幕上邊界的距離, 單位為像素 pixel, 即表單左上角的 Y 座標 - Left 屬性 : 是指表單左邊到螢幕左邊界的距離, 即表單左上角的 X 座標 - 兩者合起來 (Left,Top) 代表表單左上角座標 - 程式中設定表單位置有兩種方式 : this.location = new Point(x,y); 或 this.left = x; this.top = y; 15

9. Size Width Height 屬性 1 Size 屬性 : 設定表單的大小包含寬度 (Width) 和高度 (Height) 子屬性 2 程式設定表單大小 : this.size = new Size(width,height); 或 this.width = width ; this.height = height; 16

10. WindowState 屬性 ( 預設值 :Normal) 用來設定表單視窗開啟時的顯示狀態, 其值有 : 1 Normal: 一般 ( 預設值 ) 2 Minimized: 視窗最小化 3 Maximized: 視窗最大化程式設定 : this.windowstate = FormWindowState.Maximized ; // 最大化 this.windowstate = FormWindowState.Minimized ; // 最小化 this.windowstate = FormWindowState.Normal; // 正常 17

11. ControlBox MaximizeBox MinimizeBox 屬性控制盒最小化最大化關閉鈕 1 分別設定表單的標題欄是否顯示 : - 控制盒 (ControlBox 屬性 ) - 最大化鈕 (MaximizeBox 屬性 ) - 最小化鈕 (MinimizeBox 屬性 ) 設為 True 表顯示, 設為 False 表不顯示 2 程式設定表單標題欄左上角不顯示控制盒 : this.controlbox =false; 18

12. AcceptButton 屬性當表單中有按鈕控制項時, 可設定按鍵相當於按下哪個按鈕控制項 - 表單有 button1 和 button2 按鈕控制項, 將 AcceptButton 屬性設成 button1, 執行時按鍵相當於按 button1 按鈕 - 程式設定 : this.acceptbutton = button1; 19

13. CancelButton 屬性 當表單中有按鈕控制項時, 設定按鍵相當於按下哪個按鈕控制項 譬如右圖表單欲將 CancelButton 屬性設成 button2 時, 執行時按鍵相當於按 button2 按鈕 程式設定 :this.cancelbutton = button2; 20

14. Opacity 屬性 ( 預設值 :100%) 設定表單的透明度, 其值由 0%( 完全透明 )~ 100%( 完全不透明 ) 透明度 =100% 透明度 =30% 21

15. ShowInTaskbar 屬性 ( 預設值 :True) - 用來設定表單是否顯示在工作列中 - True 表當表單最小化時會置於工作列的上面 - False 表最小化時不出現在工作列上面隱藏起來 - 可按 + 鍵切換重新顯示出來 22

16. TopMost 屬性 ( 預設值 :False) - 用來設定表單是否永遠出現在所有視窗最上層 - 若設為 False 表不必置於所有視窗的最上層 - 若設為 True 表永遠保持置於所有視窗的最上層 23

17. Icon 屬性 用來更改標題欄左邊的小圖示 24

8.2 Form 常用的事件 事件 (Event) 是可用程式碼來回應或處理的動作 在 Windows 下, 表單啟動 按下或放開滑鼠按下或放開滑鼠 拖曳滑鼠拖曳滑鼠 按下或放開鍵盤的按鍵 打開或關閉視窗等動作的處理狀況都屬於 事件事件 將為回應事件時所要執行的程式碼稱為事件處理事件處理 (Eventhandle) 函式 VC# 每個表單和控制項都提供一組預先定義好的事件處理函式, 事件處理函式內預設空的程式碼, 需要時再依需求撰求撰寫相關程式碼寫相關程式碼 程式執行中, 若觸發觸發到該事件, 會將此事件處理函式內的程式碼執行一次 25

VC# 2008 中的事件處理函式是 void 型別 但系統本系統本身有自己呼叫事件方式, 和一般 void 方法呼叫呼叫方式不相方式不相同 VC# 宣告事件處理函式是事件處理函式是使用 += 運算子及 new EventHandler 來指定控制項的事件觸發觸發時要執行哪個函式 當 button1 的 Click 事件被觸發觸發時會執行 button1_click 事件處理函式 : this.button1.click += new System.EventHandler(this.button1_Click); 26

在 button1 按鈕控制項快按滑鼠左鍵兩下按滑鼠左鍵兩下, 下面敘述自動增加增加到 Form1.Designer.cs 檔, 不用理會它 : this.button1.click += new System.EventHandler(this.button1_Click); 接著進著進入 Form1.cs 檔中的 button1_click 事件處理函式, 此時可在 button1_click 事件處理函式內撰寫 button1 按鈕 Click 事件所要處理的程式碼 : private void button1_click(object sender, EventArgs e) { } 27

Load 事件 - 表單第一次載入時載入時觸動此事件 - 表單載入後此事件一直到程式結束都不會再執行事件一直到程式結束都不會再執行 - 可用來設定變數初數初值或更改控制項屬性值值或更改控制項屬性值 Activated 事件 - 當表單第一次啟動時, 此事件事件緊接在 Load 事件後被觸動執行的事件動執行的事件 - 當程式執行時只要表單被選取變成作用表單時, 也會觸動此事件, 不像 Load 事件只在啟動時執行一次 28

Click 事件當使用者用滑鼠在表單用者用滑鼠在表單沒有控制項的有控制項的地方按一下滑鼠左鍵, 就會觸動表單的 Click 事件 DoubleClick 事件當使用者用滑鼠在表單空白處用者用滑鼠在表單空白處快按兩下, 就會觸動 DoubleClick 事件 但要特別要特別注意注意的是, 觸動 DoubleClick 事件的同時也會時也會觸動 Click 事件, 而且 Click 事件會先觸動 KeyPress 事件當使用者按鍵盤時, 就會觸動 KeyPress 事件 29

試寫一個寫一個測試測試本節介紹節介紹的表單的表單五個常用事件用事件 1 當表單載入時, 將表單置於螢幕的正中央, 並在標題欄顯示 表單事件測試 2 在表單上按一下, 表單左上角座標固定不動表單寬度增長 10 Pixels, 高度減 10 Pixels 3 在表單上快按兩下按兩下使整個表單整個表單往右移 20 Pixels 4 在桌面按一下, 表單變成無作用, 再按表單一下, 表單又變成作用表單, 重新置於螢幕正中央中央且表單大小恢復恢復成開成開始執行時的大小執行時的大小 5 當在鍵盤上按任一鍵結束程式執行一鍵結束程式執行 30

執行情形 31

// FileName : form1.sln 01 using System; 02 using System.Collections.Generic; 03 using System.ComponentModel; 04 using System.Data; 05 using System.Drawing; 此部份程式區段為引用相關的命名空間是編寫程式時自動產生的, 為節省篇幅, 各章節範例程式碼中除非有必要, 此部份將不列出 06 using System.Text; 07 using System.Windows.Forms; 08 09 namespace form1 10 { 11 public partial class Form1 : Form 12 { 13 public Form1() 14 { 15 InitializeComponent(); 16 } 32

17 18 int form_left, form_top, form_width, form_height; 19 private void Form1_Load(object sender, EventArgs e) 20 { 21 form_left = this.left; 22 form_top = this.top; 23 form_width = this.width; 24 form_height = this.height; 25 this.text = " 表單事件測試 "; 26 } 27 private void Form1_Click(object sender, EventArgs e) 28 { 29 this.width += 10; 30 this.height -= 11; 31 } 33

32 private void Form1_DoubleClick(object sender, EventArgs e) 33 { 34 this.left += 20; 35 } 36 private void Form1_Activated(object sender, EventArgs e) 37 { 38 this.location = new Point(form_left, form_top); 39 this.size = new Size(form_width, form_height); 40 } 41 private void Form1_KeyPress(object sender, KeyPressEventArgs e) 42 { 43 Application.Exit(); 44 } 45 } 46 } 34

8.3 Label 和 LinkLabel 標籤控制項 8.3.1 標籤控制項 標籤控制項 是非常非常重要的輸出重要的輸出介面 可用來在表單上面顯示文字 圖片以圖片以及小圖示小圖示 35

屬性說明 AutoSize 設定控制項的寬度是否隨文字長度自動縮放 若設為 True, 控制項的寬度會隨文字長度自動調整, 此時控制項左上角出現小白框如所示無法調整 ; 若設為 False 則控制項允許手動調整, 控制項四周出現八個小白框如所示 預設值為 True BackColor 用來設定標籤控制項的背景色 假設表單有背景圖, 若將 label1 標籤控制項的背景色設為透明, 可避免標籤控制項的背景色遮住破壞表單背景圖 其程式寫法如下 : label1.backcolor=color.transparent; BorderStyle 設定標籤的邊框樣式 其值如下 : 1None: 不加邊框 ( 預設值 ) 2FixedSingle: 加邊框 3Fixed3D: 立體凹陷 36

Enabled Font ForeColor Text 設定該控制項是否有作用 若設為 True, 該控制項有作用即可點選 ; 若為 False, 該控制項文字會以淺灰色顯示 預設值為 True 設定控制項上面顯示文字的字型, 上一章已介紹過設計階段的設定方法, 至於程式中的寫法如下 : label1.font = new Font( 字型, 大小, 樣式 ); 例如 : label1.font = new Font( 標楷體,16,FontStyle.Bold); 設定控制項上面顯示文字的顏色 用來設定控制項上面顯示的訊息, 只能顯示資料, 無法輸入資料 表單的 Text 屬性則設定標題欄名稱 其程式寫法如下 : label1.text= Hello! ; 37

TextAlign 設定文字在標籤控制項顯示的位置, 其值有 : 1TopLeft 左上 ( 預設值 ) 2TopCenter( 中上 ) 3TopRight( 右上 ) 4MiddleLef( 左中 ) 5MiddleCenter( 中央 ) 6MiddleRight( 右中 ) 7BottomLeft( 左下 ) 8BottomCenter( 中下 ) 9BottomRight( 右下 ) UseMnemonic 若設為 True, 則 Text 屬性值中 & 後的第一字為提示字元 例如 :Text 屬性值為 &Help, H 就為提示字元, 程式執行時會顯示為 Help Visible 設定該控制項是否被隱藏 若設為 True, 表示該控制項在表單看得到 ; 若設為 False, 將該控制項隱藏 要注意在設計階段雖設為隱藏, 還是看得到該控制項, 執行時才會自動隱藏 預設值為 True 38

8.3.2 連結標籤控制項 連結標結標籤控制項具控制項具備 1 標籤控制項的控制項的功能外 2 還增加一些超連些超連結的結的功能 39

一. LinkLabel 常用屬性 屬性 LinkColor LinkVisited VisitedLinkColor 說明設定控制項上面超連結文字的起始顏色, 預設藍色設定控制項上面超連結文字超連結後顏色是否設為 VisitedLinkColor 屬性值, 以和尚未點選過的超連結控制項區分, 預設值為 True 表示會變色 設定控制項上面超連結文字已經超連結過的顏色, 預設值為紫色 40

DisabledLinkColor 設定控制項超連結被停用時超連結文字的顏色, 預設值為灰色 LinkBehavior LinkArea 設定超連結文字是否要加底線, 說明如下 : 1SystemDefault: 系統預設 ( 預設值 ) 2AlwaysUnderline: 加底線 3HoverUnderline: 游標在文字上才加底線 4NeverUnderline: 不加底線設定控制項上面文字允許超連結的範圍 屬性值為 (Start,Length), ),Start 為文字起始位置 ; Length 為長度 例如 :Text = SuperMan,LinkArea 屬性值為 (5,3), 則表示由第六 (5+1) 個字起取 3 個字, 所以超連結的文字為 Man 41

二. LinkLabel 常用事件當使用者按到有超連結文字時, 觸動 LinkClicked 事件 1. 超連到網站語法 :System.Diagnostics.Process.Start(" 網址 URL"); [ 簡例 ] 超連結到 discovery 網站 System.Diagnostics.Process.Start("http://www.discover.com"); 42

2. 超連到指定的資到指定的資料檔或執行檔 語法 :System.Diagnostics.Process.Start(" 路徑 \\ 檔名 "); [ 簡例 ] 超連結到 C 槽 test 資料夾的 readme.doc 檔案 System.Diagnostics.Process.Start("c:\\test\\readme.doc"); 3. 超連結到結到電子信箱 語法 :System.Diagnostics.Process.Start("mailto: 電子信箱 "); [ 簡例 ] 超連結到電子信箱 System.Diagnostics.Process.Start("mailto:tom@hinet.net"); 43

超連結練習練習 表單載入時出現下圖表單載入時出現下圖進入雅虎網站雅虎網站相關提示訊息 當按當按 雅虎網站簡介雅虎網站簡介 超連超連結文字時, 開啟專案 bin/debug 資料夾料夾下的 Yahoo.txt 檔 若點選若點選 雅虎網站雅虎網站 中 雅虎雅虎 超連超連結文字時, 會連結到結到雅虎 tw.yahoo.com 44

上機 Step1 設計輸出入介面 45

Step3 撰寫程式碼 // FileName : link1.sln 01 private void Form1_Load(object sender, EventArgs e) 02 { 03 lbltitle.text = " 雅虎網站是常用的入口網站 \n 請按下列超連結至雅虎網站!"; 04 lbltitle.font = new Font(" 標楷體 ", 14, FontStyle.Bold); 05 } 06 private void lnkreadme_linkclicked(object sender, LinkLabelLink ClickedEventArgs e) 07 { 08 System.Diagnostics.Process.Start("yahoo.txt"); 09 } 10 Private void lnkyahoo_linkclicked(object sender, LinkLabelLink ClickedEventArgs e) 11 { 12 System.Diagnostics.Process.Start("http://tw.yahoo.com"); 13 } 46

8.4 TextBox 文字方塊控制項 文字方塊控制項是用來輸入資控制項是用來輸入資料也可用來顯示資料建立時出現小白框用來調整控制項的左右寬度 47

智慧標籤 (Smart Tag) 文字方塊的右上角, 顯示文字方塊的常用屬性供用屬性供你直接選取, 而不必再到屬性視窗中點選不必再到屬性視窗中點選 勾選表將 MultiLine 屬性設為 True, 允許資料由單行改成由單行改成多行顯示行顯示 48

49

50

51

二. TextBox 常用事件 TextChanged 是文字方塊控制項的預設事件控制項的預設事件 當使用者在文字方用者在文字方塊控制項內輸入文字控制項內輸入文字而改變 Text 屬性值時, 會觸動 TextChanged 事件 在 TextChanged 事件中我們可以可以檢查檢查輸入字輸入字元是否正確正確或將輸入的資或將輸入的資料同步反料同步反應在其應在其它相關的控制項 52

試寫一個寫一個美金美金和台幣兌台幣兌換程式換程式 當在匯當在匯率和兌換美金兩個輸入框中資料有異動時, 所兌換的新換的新台幣金額亦會跟著跟著改變改變 執行情形 1. 開始 2. 輸入匯率 53

Step1 設計輸出入介面 54

Step2 撰寫程式碼 // FileName : textbox1.sln 01 private void Form1_Load(object sender, EventArgs e) 02 { 03 this.text = " 美金兌換新台幣 "; 04 txtrate.text = "0"; 05 txtus.text = "0"; 06 txtrate.textchanged += new EventHandler(txt_TextChanged); 07 txtus.textchanged += new EventHandler(txt_TextChanged); 08 } 09 10 private void txt_textchanged(object sender, EventArgs e) 11 { 12 try 13 { 14 double n = double.parse(txtrate.text) * double.parse(txtus.text); 15 lblnt.text = n.tostring(); 16 } 17 catch (Exception ex) 18 { } 19 } 55

8.5 Button 按鈕控制項 按鈕控制項是重要的輸入介面大部分視窗都會用按鈕控制項作為分視窗都會用按鈕控制項作為功能的選用能的選用 按鈕控制項除可顯示文字可顯示文字外, 也可顯示小圖示 56

57

58

設計一個比大小的遊戲遊戲 1 程式開始時, 只有 鈕有效 2 當按 鈕, 提示訊息改為 請選擇按鈕 1 或 2, 鈕無 效 鈕有效, 產生兩個 1~99 間不重複的亂數亂數 3 當按 鈕之一, 將產生的亂數亂數顯示到按鈕上面, 若所按的鈕值較大, 顯示 你猜對了!, 否則顯示 你猜錯了! 4 接著將 設為無效, 鈕設為有效, 提示訊息改為 請按開始鈕請按開始鈕猜哪猜哪個按鈕大個按鈕大 5 各畫面都顯示面都顯示累積累積輸贏的次數次數 6 按 鈕結束程式程式 59

執行情形 60

上機 Step1 設計輸出入介面 61

Step3 撰寫程式碼 // FileName :guess.sln 01 int no1, no2, win, loss; 02 03 private void Form1_Load(object sender, EventArgs e) 04 { 05 win = loss = 0; 06 lblwin.text = " 贏 : " + win.tostring() + " 次 "; 07 lblloss.text = " 輸 : " + loss.tostring() + " 次 "; 08 btn1.enabled = false; 09 btn2.enabled = false; 10 } 62

12 private void btnstart_click(object sender, EventArgs e) 13 { 14 lbltitle.text = " 請選擇按鈕 1 或 2..."; 15 lblmsg.text = ""; 16 btn1.enabled = true; 17 btn2.enabled = true; 18 btnstart.enabled = false; 19 btn1.text = " 按鈕 1"; 20 btn2.text = " 按鈕 2"; 21 Random ranobj = new Random(); 22 no1 = ranobj.next(1, 100); 23 do 24 no2 = ranobj.next(1, 100); 25 while (no1 == no2); 26 } 63

28 private void btn1_click(object sender, EventArgs e) 29 { 30 btn1.text = Convert.ToString(no1); 31 btn2.text = Convert.ToString(no2); 32 if (no1 > no2) 33 { 34 lblmsg.text = " 你猜對了!"; 35 win++ ; 36 } 37 else 38 { 39 lblmsg.text = " 你猜錯了!"; 40 loss++; 41 } 64

42 lblwin.text = " 贏 : " + win.tostring() + " 次 "; 43 lblloss.text = " 輸 : " + loss.tostring() + " 次 "; 44 lbltitle.text = " 請按開始鈕猜哪個按鈕大 "; 45 btnstart.enabled = true; 46 btn1.enabled = false; 47 btn2.enabled = false; 48 } 49 50 private void btn2_click(object sender, EventArgs e) 51 { 52 btn1.text = Convert.ToString(no1); 53 btn2.text = Convert.ToString(no2); 54 if (no2 > no1) 55 { 56 lblmsg.text = " 你猜對了!"; 57 win++; 58 } 59 else 60 { 61 lblmsg.text = " 你猜錯了!"; 62 loss++; 63 } 65

64 lblwin.text = " 贏 : " + win.tostring() + " 次 "; 65 lblloss.text = " 輸 : " + loss.tostring() + " 次 "; 66 lbltitle.text = " 請按開始鈕猜哪個按鈕大 "; 67 btnstart.enabled = true; 68 btn1.enabled = false; 69 btn2.enabled = false; 70 } 71 72 private void btnend_click(object sender, EventArgs e) 73 { 74 Application.Exit(); 75 } 66

8.6 MessageBox.Show 方法 MessageBox.Show() 方法可產生允許產生允許顯示 1 提示訊息 2 標題欄名稱 3 提示圖示 4 相關按鈕語法 : DialogResult 傳回值 = MessageBox.Show( 訊息, 標題, 按鈕常數, 圖示常數 ); 67

DialogResult result = MessageBox.Show(" 確定結定結束程式?"," 井字遊戲 ", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation); 68

第八章第八章第八章表單輸出入介面設計表單輸出入介面設計表單輸出入介面設計 DialogResult 常數說明說明說明說明 OK 使用者按使用者按使用者按使用者按鈕的鈕的鈕的鈕的傳回傳回傳回傳回值 Cancel 使用者按使用者按使用者按使用者按鈕的鈕的鈕的鈕的傳回傳回傳回傳回值 Abort 使用者按使用者按使用者按使用者按鈕的鈕的鈕的鈕的傳回傳回傳回傳回值 Retry 使用者按使用者按使用者按使用者按鈕的鈕的鈕的鈕的傳回傳回傳回傳回值 Ignore 使用者按使用者按使用者按使用者按鈕的鈕的鈕的鈕的傳回傳回傳回傳回值 Ignore 使用者按使用者按使用者按使用者按鈕的鈕的鈕的鈕的傳回傳回傳回傳回值 Yes 使用者按使用者按使用者按使用者按鈕的鈕的鈕的鈕的傳回傳回傳回傳回值 No 使用者按使用者按使用者按使用者按鈕的鈕的鈕的鈕的傳回傳回傳回傳回值 None 使用者未按鈕的使用者未按鈕的使用者未按鈕的使用者未按鈕的傳回傳回傳回傳回值 69

按鈕常數 用來設定視窗中顯示的按鈕 常數常數如下 : 70

圖示常數 用來設定視窗中顯示的圖示 : MessageBoxIcon 常數 顯示的圖示 Asterisk Error Exclamation Question None 不顯示圖示 71

試寫一個寫一個帳號及密帳號及密碼檢查檢查程式程式 程式一開程式一開始要求輸入 1 帳號 ( 帳號為 yahoo ) 2 密碼 ( 密碼為 1688 ) 當帳號及密帳號及密碼正確連正確連結到結到奇摩網站 奇摩網站 http://www.kimo.com.tw 帳號及密碼不碼不正確正確可再重新輸入, 連續錯誤三次結束程式結束程式 72

執行情形 73

設計輸出入介面 74

撰寫程式碼 // FileName : msgbox1.sln 01 int num; 02 03 private void btnlogin_click(object sender, EventArgs e) 04 { 05 DialogResult result; 06 num += 1; 07 if (txtid.text == "yahoo" && txtpwd.text == "1688") 08 { 09 MessageBox.Show(" 歡迎光臨, 奇摩網站 "); 10 System.Diagnostics.Process.Start("http://www.kimo.com.tw"); 11 } 75

12 else 13 { 14 if (num == 3) 15 { 16 MessageBox.Show(" 帳號密碼連續三次輸入錯誤 \n 無法進入奇摩網站 "); 17 Application.Exit(); 18 } 19 else 20 { 21 result = MessageBox.Show(" 你的帳號密碼有誤, 剩下 " + (3 - num) + " 次! 是否重新輸入?", " 帳號密碼錯誤 ", MessageBoxButtons.YesNo); 22 if (result == DialogResult.No) Application.Exit(); 23 } 24 } 25 } 26 27 private void btnexit_click(object sender, EventArgs e) 28 { 29 Application.Exit(); 30 } 76