• 沒有找到結果。

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

N/A
N/A
Protected

Academic year: 2022

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

Copied!
73
0
0

加載中.... (立即查看全文)

全文

(1)

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

講師︰唐士軒

CSIE NTU

(2)

.NET 專案範本

(3)

檔案介紹

記錄方案的編輯狀態 cs_form.suo

專案目前編輯狀態 cs_form.csproj.user

描述組件的資訊 assemblyInfo.cs

儲存表單中使用的相關資料 Form1.resx

儲存表單及程式碼相關資訊 Form1.cs

利用專案所編譯出來的執行檔 cs_form.exe

儲存專案中使用到那些檔案資料等資訊 cs_form.csproj

儲存方案中使用到那些檔案資料等資訊 cs_form.sln

說明 檔案

(4)

方案總管

z 我們可以利用 [檢視] 中的 [方案總管] 來開啟方 案總管視窗

功能說明 圖示

顯示所有檔案 重新整理

切換到表單編輯視窗 切換到程式編輯視窗

(5)

屬性視窗

z 在程式設計階段,可以透過 [檢視] 中的 [屬性 視窗] 來設定修改表單上各控制項的屬性值

功能說明 圖示

顯示屬性視窗

依屬性名稱排序顯示 依屬性類型分類顯示

物件下拉選單

(6)

控制項

z開啟 [檢視] 中的 [工具箱] 會列出常用控 制項

z要在表單中加入控制項的方式有二種

z點選控制項後拖曳至表單上 z連續點選控制項二下

z重疊顯示二個控制項

z可利用右鍵中的提到最上層

或移到最下層來調整控制項

(7)

表單及控制項常用屬性

z 外觀

z Text–控制項的標題文字 z BackColor–背景色

z BackgroundImage–背景圖 z Font–字型設定

z ForeColor–前景色

z 行為

z Enable–設定該控制項是否有作用 z Visible–是否顯示該控制項

z 配置

(8)

事件

z在視窗程式設計中,程式的執行流程是 以使用者觸發的事件順序來決定

z表單及控制項個別提供了許多不同的事 件,我們可以在不同的事件中撰寫不同 的程式

z當使用者觸發事件後,程式的流程會立 即跳至該事件內的程式區塊中執行

z在事件視窗中,點選事件名稱二下,即

(9)

表單常用事件

zLoad

z當表單被載入開啟時,會執行此事件內的程 式區段一次

zClick

z在表單上按下滑鼠左鍵,會執行此事件內的 程式區段一次

zResize

z調整表單大小時,會執行此事件內的程式區

段一次

(10)

Label 控制項

zLabel 控制項主要是用來顯示文字 z常用屬性

zText–設定要顯示的文字

zTextAlign–設定文字顯示位置 zVisible–是否顯示控制項

z常用事件

zClick–按一下時發生

zMouseEnter–滑鼠經過

(11)

實例探討 sample6-a1

z程式功能

z猜謎語

z程式內容

private void answerLB_Click(object sender, System.EventArgs e)

{

answerLB.Text = "灰熊厲害";

}

(12)

課堂練習 sample6-b1

z程式功能

z猜謎語

z當滑鼠移至題目上時,題目的字改成 "看解 答",當滑鼠移開後恢復成原本題目的文字 z當使用者點選 "看解答" 時,原本題目的文

字變成解答

z基本概念

z利用 Click、MouseEnter 及 MouseLeave 事件

(13)

Button 控制項

zButton 控制項提供按鈕功能 z常用屬性

zText–設定要顯示的文字

zTextAlign–設定文字顯示位置 zVisible–是否顯示控制項

z常用事件

zClick–按一下時發生

zMouseEnter–滑鼠經過

(14)

實例探討 sample6-a2

z程式功能

z設計結束視窗按鈕

z設定表單上的 CancelButton

z程式內容

private void closeBTN_Click(object sender, System.EventArgs e)

{

Application.Exit();

(15)

TextBox 控制項

zTextBox 控制項用以讓使用者輸入資料 z常用屬性

zText–設定取得控制項中的文字 zTextAlign–設定文字顯示位置

zPasswordChar–輸入的資料以別的字元顯示 zReadOnly–文字是否允許修改

zMaxLength–輸入文字最大寬度

zMultiLine–允許多行輸入

(16)

課堂練習 sample6-b2

z程式功能

z登入系統

z輸入帳號為 alice ,密碼為 bob 時,顯示登 入成功,否則顯示資料錯誤

z另設清除按鍵,將輸入方塊的資料清除

z基本概念

z在 Click 事件中判斷使用者輸入的資料是否

正確

(17)

Timer 控制項

zTimer 控制項供計時及週期事件使用 z常用屬性

zEnable–是否啟動 Timer

zInterval–Timer 事件發生週期 (千分之一秒)

(18)

實例探討 sample6-a3 (1)

z 程式功能

z 倒數計時

z 程式內容

private void startBTN_Click(object sender, System.EventArgs e)

{

timer1.Enabled = true;

countLB.Text = countTB.Text;

countTB.Enabled = false;

startBTN.Enabled = false;

(19)

實例探討 sample6-a3 (2)

z程式內容

private void timer1_Tick(object sender, System.EventArgs e)

{

countLB.Text = (int.Parse(countLB.Text) - 1) .ToString();

if(int.Parse(countLB.Text) ==0) timer1.Enabled = false;

}

(20)

課堂練習 sample6-b3

z程式功能

z閃爍提示文字

z點選文字開始閃爍 z再點選停止

z基本概念

z可利用定時更改 Label 控制項的 Visible 屬 性達到閃爍效果

z也可定時更改 Label 控制項的文字來達成

(21)

PictureBox 控制項

zPictureBox 控制項供計時及週期事件使用 z常用屬性

zImage–設定顯示圖片

zSizeMode–設定載入圖片擺放方式

zNormal︰圖片放在控制項的左上角

zStretchImage︰圖片隨控制項大小伸縮

zAutoImage︰控制項隨圖片大小伸縮

zCenterImage︰圖片放在控制項正中央

(22)

課堂練習 sample6-b4

z程式功能

z紅綠燈

z可設定紅燈綠燈及黃燈時間長度

z基本概念

z利用 Timer 來決定更換圖片時間 z利用 MSDN 查詢程式執行中更換

PictureBox 圖片的方式

z可能需要一個可供所有方法存取的欄位變數

(23)

MessageBox 類別

zMessageBox 類別提供錯誤或警告訊息等 的對話方塊,以提醒使用者注意

zShow 靜態方法

zShow (訊息文字, 標題文字, 顯示按鈕, 圖示);

zShow (string, string, MessageBoxButtons,

MessageBoxIcon)

(24)

MessageBox 類別–顯示按鈕

說明 顯示按鈕列舉常數

重試、取消 MessageBoxButtons.RetryCancel

MessageBoxButtons.YesNo 是、否

是、否、取消 MessageBoxButtons.YesNoCancel

異常終止 重試、略過 MessageBoxButtons.AbortRetryIgnore

確定、取消 MessageBoxButtons.OKCancel

MessageBoxButtons.OK 確定

(25)

MessageBox 類別–圖示

MessageBoxIcon.Question MessageBoxIcon.Stop MessageBoxIcon.Hand

圖示 圖示列舉常數

MessageBoxIcon.Error MessageBoxIcon.Warning MessageBoxIcon.Exclamation

MessageBoxIcon.Information MessageBoxIcon.Asterisk

(26)

MessageBox 類別–回傳值

z 呼叫 MessageBox.Show 方法時,當使用者按 下訊息方塊中其中一個按鈕時,會回傳一個 DialogResult 列舉型別的回傳值

5 4 3 2 1

回傳值 按鈕

列舉型別

DialogResult.Ignore 略過

重試 DialogResult.Retry

DialogResult.Abort 異常終止 DialogResult.Cancel 取消

確定 DialogResult.OK

(27)

實例探討 sample6-a4 (1)

z 程式功能

z 密碼設定 (限四碼)

z 程式內容

private void okBTN_Click(object sender, System.EventArgs e) {

if(pwTB.Text.Length != 4)

MessageBox.Show("密碼設定限四位數!!", "設定錯誤", MessageBoxButtons.OK, MessageBoxIcon.Error);

else {

MessageBox.Show("密碼設定成功!!", "設定完成",

MessageBoxButtons.OK, MessageBoxIcon.Information);

(28)

實例探討 sample6-a4 (2)

z 程式內容

private void exitBTN_Click(object sender, System.EventArgs e)

{

DialogResult result;

result = MessageBox.Show("確定離開!?", "離開", MessageBoxButtons.OKCancel,

MessageBoxIcon.Question);

if(result == DialogResult.OK) Application.Exit();

else

(29)

RadioButton 控制項

z RadioButton 控制項提供單選選項按鈕的功能 z 同一個表單中具有多組單選選項時,可利用

GroupBox 或 Panel 來區隔 z 常用屬性

z CheckAlign–設定選項按鈕顯示位置 z Checked–按鈕是否選取

z Text–顯示文字

z 常用事件

z CheckedChanged–Checked 屬性改變時發生

(30)

實例探討 sample6-a5 (1)

z程式功能

z資料核對

z利用 GroupBox 將 RadioButton 區分為二組

z程式內容

private void exitBTN_Click(object sender, System.EventArgs e)

{

Application.Exit();

(31)

實例探討 sample6-a5 (2)

z 程式內容

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;

(32)

CheckBox 控制項

z CheckBox 控制項提供複選核取方塊的功能 z 常用屬性

z CheckAlign–設定核取方塊顯示位置 z Checked–核取方塊是否選取

z Text–顯示文字

z ThreeState–設定為雙態或三態 z CheckState–取得目前勾選狀況

z 常用事件

z CheckedChanged–Checked 屬性改變時發生

(33)

實例探討 sample6-a6 (1)

z 程式功能

z 電腦採購

z 勾選需要配備立即更新總價

z 程式內容

private void monitorCB_CheckedChanged(object sender, System.EventArgs e)

{

int cost = monitorCB.Checked? 12000: -12000;

totalLB.Text = (int.Parse(totalLB.Text) + cost).ToString();

(34)

實例探討 sample6-a6 (2)

z 程式內容

private void boxCB_CheckedChanged(object sender, System.EventArgs e)

{

int cost = boxCB.Checked? 15000: -15000;

totalLB.Text = (int.Parse(totalLB.Text) + cost).ToString();

}

private void mouseCB_CheckedChanged(object sender, System.EventArgs e)

{

int cost = mouseCB.Checked? 500: -500;

(35)

實例探討 sample6-a6 (3)

z 程式內容

private void

keyboardCB_CheckedChanged(object sender, System.EventArgs e)

{

int cost = keyboardCB.Checked? 500: -500;

totalLB.Text = (int.Parse(totalLB.Text) +

cost).ToString();

(36)

課堂練習 sample6-b5

z程式功能

z電腦採購

zCPU 、 RAM 及週邊各有三種類可挑選

zCPU 及 RAM 為必備元件,若沒採購跳出錯 誤訊息視窗

z計算全部費用

z基本概念

z可利用迴圈讀取 GroupBox 中的元件簡化程

式碼

(37)

ListBox 控制項 (1)

zListBox 控制項提供文字項目清單供使用者 選擇

z常用屬性

zItems–元素內容 (ListBox.ObjectCollection 類別) zMultiColumn–設定多欄顯示

zColumnWidth–多欄顯示時每一個欄位寬度 zSelectionMode–設定清單可選取數目

zNone–不能選取

zOne–單選

(38)

ListBox 控制項 (2)

z常用屬性

zSelectedItem–取得被選取項目

zSelectedItems–取得被選取項目集合 zSelectedIndex–取得選取項目索引

zSelectedIndices–取得所有選取項目索引

z常用事件

zSelectedIndexChange–清單中選取項目改變

時發生

(39)

相關類別

zListBox.ObjectCollection 類別 z常用屬性

zCount–計算清單項目個數

z常用方法

zAdd –新增項目至清單

zRemove–刪除清單中某項目 zClear–清除全部項目

z用法

(40)

實例探討 sample6-a7 (1)

z 程式功能

z 設定啟用功能

z 程式內容

private void Form1_Load(object sender, System.EventArgs e)

{

string[] funcStr = {"檔案","編輯","檢視","專案","建置

","偵錯","工具","視窗","說明"};

foreach(string str in funcStr) allLB.Items.Add(str);

(41)

實例探討 sample6-a7 (2)

z 程式內容

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);

allLB.Items.Remove(allLB.SelectedItem);

} }

(42)

實例探討 sample6-a7 (3)

z 程式內容

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);

} }

(43)

ComboBox 控制項

zComboBox 控制項提供下拉式選單功能,

為 ListBox 控制項的延伸 z常用屬性

zText–取得設定文字

zMaxLength–使用者可輸入最大長度

zMaxDropDownItems–下拉部份一次顯示最 大項目個數

zDropDownStyle

zDropDown–可編輯,箭頭按鈕顯示清單

(44)

實例探討 sample6-a8 (1)

z程式功能

z地址輸入

z程式內容

private void addressTB_Enter(object sender, System.EventArgs e)

{

if(addressTB.Text == "輸入地址")

addressTB.Text = "";

(45)

實例探討 sample6-a8 (2)

z 程式內容

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("汐止市");

(46)

課堂練習 sample6-b6

z 程式功能

z 書籍分類清單

z 基本概念

z 利用 ComboBox 及 ListBox 完成

台式料理 日式料理

韓式料理 食譜

資料庫程式 設計

十天學會 JAVA C# 程式設

計入門 電腦

倚天屠龍記 神鵰俠侶

射鵰英雄傳 小說

(47)

TreeView 控制項

zTreeView 控制項提供樹狀結構檢視功能 z常用屬性

zNodes–節點內容

zSelectedNode–選取節點

zCheckBoxes–顯示核取方塊

zPathSeperator–傳回路徑的字串分隔字元

z常用事件

(48)

相關類別

zTreeNodeCollection 類別

zCount 屬性–取得節點數

zAdd 方法–增加節點至該點子節點中

zRemove 方法–刪除節點 (傳入 TreeNode)

zTreeNode 類別

zText–節點顯示文字

zRemove 方法–刪除節點

zFullPath–取得從根樹狀節點通往目前樹狀

(49)

實例探討 sample6-a9 (1)

z 程式功能

z 簡易資料夾檢索

z 程式內容

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);

(50)

實例探討 sample6-a9 (2)

z 程式內容

private void diskCB_SelectedIndexChanged(object sender, System.EventArgs e)

{

updateTreeView(diskCB.Text);

}

private void updateTreeView(string disk) {

try {

dirTV.Nodes.Clear();

(51)

實例探討 sample6-a9 (3)

z 程式內容

int i=0;

foreach(string dir in dirs)

{

dirTV.Nodes.Add(dir);

i++;

try

{

string[] subDirs = Directory.GetDirectories(dir);

foreach(string subDir in subDirs)

dirTV.Nodes[i-1].Nodes.Add(subDir);

}

catch {}

(52)

課堂練習 sample6-b7

z程式功能

z班級資料表 z可新增班級

z重複新增不予動作

z基本概念

z利用 TreeView 顯示班級資訊

(53)

ListView 控制項

zListView 控制項提供項目清單檢視功能 z常用屬性

zColumns–設定包含欄位 zItems–清單項目內容

(ListView.ListViewItemCollection 類別) zView–清單檢視方式

zCheckBoxes–顯示核取方塊

zGridLines–顯示格線

(54)

相關類別 (1)

zListView.ListViewItemCollection 類別

zCount 屬性–取得項目個數 zAdd 方法–新增項目

zRemove 方法–移除指定項目 zClear 方法–清除所有項目

zListViewItem 類別

zSubItems 屬性–子項目

(ListViewItem.ListViewSubItemCollection 類別)

(55)

相關類別 (2)

zListViewItem.ListViewSubItemCollection 類別

zCount 屬性–取得子項目個數 zAdd 方法–新增子項目

zRemove 方法–移除指定子項目 zClear 方法–清除所有子項目

zListViewItem.ListViewSubItem 類別

zText 屬性–設定取得子項目內容

(56)

實例探討 sample6-a10 (1)

z 程式功能

z 學生名單

z 程式內容

private void clearBTN_Click(object sender, System.EventArgs e)

{

idTB.Text = "";

nameTB.Text = "";

studentLV.Items.Clear();

(57)

實例探討 sample6-a10 (2)

z 程式內容

private void addBTN_Click(object sender, System.EventArgs e)

{

if(idTB.Text != "" && nameTB.Text != "") {

ListViewItem item = new ListViewItem();

item.SubItems.Add(idTB.Text);

item.SubItems.Add(nameTB.Text);

studentLV.Items.Add(item);

}

(58)

課堂練習 sample6-b8

z程式功能

z成績表

z可新增科目成績資料 z計算總平均

z基本概念

z利用 ListView 來完成

(59)

執行緒

z我們可以把執行緒想像為一段程式碼區段 z一個應用程式至少會在一個以上的執行緒

中執行

z.NET 內建提供多執行緒支援,可藉由執 行緒類別成員所提供的功能來控制執行緒 的行為

zThread 類別提供執行緒支援,可引用

(60)

Thread 類別 (1)

z建構式

zpublic Thread(ThreadStart start );

z常用屬性

zName–取得或設定執行緒名稱

zIsAlive–取得目前執行緒執行狀況

z常用方法

zStart–執行該執行緒

zSuspend–使執行緒暫停

(61)

Thread 類別 (2)

z靜態方法

zSleep–暫停執行緒一段時間

z靜態屬性

zCurrentThread–取得目前執行緒

z用法

zThreadStart myThreadStart =

new ThreadStart(方法成員名稱);

zThread myThread =

(62)

實例探討 sample6-a11 (1)

z 程式功能

z 遊戲半成品,Thread 類別測試

z 程式內容

class box {

public static bool stopFlag = false;

private System.Windows.Forms.Label myLB;

public box(System.Windows.Forms.Label LB) {

myLB = LB;

(63)

實例探討 sample6-a11 (2)

z 程式內容

public void action() {

Random rnd = new Random();

do {

myLB.Top += rnd.Next(0,2) == 0? 50: -50;

if(myLB.Top <= 0) myLB.Top += 100;

else if(myLB.Top >= 400) myLB.Top -= 100;

Thread.Sleep(500);

}while(!stopFlag);

(64)

實例探討 sample6-a11 (3)

z 程式內容

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));

(65)

實例探討 sample6-a11 (4)

z 程式內容

box1Thread.Start();

Thread.Sleep(200);

box2Thread.Start();

}

private void endBTN_Click(object sender, System.EventArgs e)

{

box.stopFlag = true;

Application.Exit();

(66)

實例探討 sample6-a12 (1)

z 程式功能

z 利用單一執行緒執行高運算量計算

z 程式內容

private void computeBTN_Click(object sender, System.EventArgs e)

{

computing();

}

private void computing() {

try {

(67)

實例探討 sample6-a12 (2)

z 程式內容

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);

(68)

課堂練習 sample6-b9

z程式功能

z利用多執行緒修改 sample10-a2 範例程式

z使其在運算過程中,視窗介面仍可自由操控

z基本概念

z引用命名空間 System.Threading,利用 Thread

類別產生一條新的執行緒來執行運算方法內

(69)

安裝與部署 (1)

z.NET 提供安裝和部署專案,我們可以透

過此專案快速產生視窗應用程式的安裝

程式

(70)

安裝與部署 (2)

z在檔案系統中,我們可以設定檔案與捷徑 要分別安裝在那些地方

z使用者的桌面–設定欲安裝至桌面上的檔案 z使用者的程式功能表–設定欲安裝至程式集的

檔案

z應用程式資料夾–設定欲安裝至 Program Files

資料夾的檔案

(71)

安裝與部署 (3)

z在資料夾上點選右鍵,選擇 [加入] [檔案]

後,即可選擇欲加入檔案

(72)

安裝與部署 (4)

z在已加入的檔案名稱上點選右鍵,即可

為該檔案建立捷徑

(73)

安裝與部署 (5)

z我們可以將專案的執行檔及欲連結的資 料庫檔案加入至應用程式資料夾中

z建立主要執行檔捷徑,將捷徑加入至使 用者桌面及使用者的程式功能表資料夾 中

z建置專案後,即會產生 Setup.Exe 安裝檔

參考文獻

相關文件

Private Sub Form_Click() MsgBox Combo1.ListCount MsgBox Combo1.ListIndex..

z請利用 struct 記錄 Bob 和 Alice 的相關資訊 z列印出 Bob 及 Alice 分別花多少錢. z再列印出

private void Page_Load(object sender, System.EventArgs e) {{. string dataSource

private void Page_Load(object sender, System.EventArgs e) {. string dataSource

 Request.Cookies[ &#34;Cookie 名稱&#34; ].Value –取得使用者所傳送的 Cookie 內容. 

Session.Add(string name, object value) z將新項目加入 Session 當中。..

zCount 屬性–取得項目個數 zAdd 方法–新增項目. zRemove 方法–移除指定項目

z屬性 (property) z方法 (method) z事件