370 likes | 655 Views
.NET 程式設計入門 ( 使用 C#). 講師:鄧智鴻. Outline. 鍵盤事件 檔案存取 動態產生控制項與事件程式碼. 鍵盤事件. 大多數的控制項具有和鍵盤相關的事件 KeyDown 按下某個鍵的時候發生 KeyUp 放開某個鍵的時候發生 KeyPress 按住某個鍵的時候發生,對於功能鍵沒有反應. 鍵盤事件. 表單中的有許多控制項,但輸入焦點只有一個 控制項成為輸入焦點的時候會和平常有所不同 TextBox 成為焦點的時,會有游標在閃 Button 成為焦點時,框線顏色粗細稍有不同
E N D
.NET 程式設計入門(使用 C#) 講師:鄧智鴻
Outline • 鍵盤事件 • 檔案存取 • 動態產生控制項與事件程式碼
鍵盤事件 • 大多數的控制項具有和鍵盤相關的事件 • KeyDown • 按下某個鍵的時候發生 • KeyUp • 放開某個鍵的時候發生 • KeyPress • 按住某個鍵的時候發生,對於功能鍵沒有反應
鍵盤事件 • 表單中的有許多控制項,但輸入焦點只有一個 • 控制項成為輸入焦點的時候會和平常有所不同 • TextBox成為焦點的時,會有游標在閃 • Button成為焦點時,框線顏色粗細稍有不同 • 所有控制項都共用一個鍵盤,不能說鍵盤一打字,所有控制項的鍵盤事件都執行。 • 鍵盤只會喚起是輸入焦點的控制項的鍵盤事件程式碼來執行 • 可以用 物件名稱. Focus(); 來指定焦點放在該物件上
鍵盤事件-課堂範例 • 程式功能 • 拉兩個TextBox、一個Label出來 • 當textbox1在輸入的時候,讓Label顯示textbox1在輸入 • 當textbox2在輸入的時候,讓Label顯示textbox2在輸入 • 程式內容 private void textBox1_KeyDown(object sender, KeyEventArgs e) { label1.Text="textBox1在輸入"; } private void textBox2_KeyDown(object sender, KeyEventArgs e) { label1.Text = "textBox2在輸入"; }
鍵盤事件-課堂範例 • 程式功能 • 比較KeyPress和KeyDown的不同 • 程式內容 private void textBox1_KeyDown(object sender, KeyEventArgs e) { label1.Text = "textBox1在KeyDown"; } private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { label1.Text="textBox1在KeyPress"; }
鍵盤事件 • KeyEventArgs物件 • 當一個鍵按下的時候,你會得到一個KeyEventArgs物件 • 屬性 • Keys KeyCode 是哪一個鍵被按了 • bool Shift Shift是否有被按 • bool Control Ctrl是否有被按 • bool Alt Alt是否有被按
鍵盤事件 • Keys 列舉 • .Net Framework中內建的一個超大列舉 • 是紀錄著鍵盤與其代碼對應的表格 • 打”Keys.”即會出現一大堆選擇項目,全都是鍵盤上的對應鍵 • (int)Keys.A可將Keys.A轉為整數型態,即為65 • Convert.ToString(Keys.A)轉為字串型態,即為”A”
鍵盤事件 • KeyEventArgs物件 • 當我們用KeyDown、KeyUp時系統會回傳鍵盤物鍵KeyEventArgs給我們 • KeyEventArgs的其中一個屬性KeyCode就是Keys型態的 • 透過讀取KeyEventArgs的KeyCode屬性值,我們可以知道使用者按了哪一個鍵
鍵盤事件-課堂範例 • 程式功能 • 將使用者目前在TextBox打的字,其印在Label上 • 程式內容 • 拉一個TextBox和Label • 在TextBox的KeyDown事件程式碼中打入 private void textBox1_KeyDown(object sender, KeyEventArgs e) { label1.Text =Convert.ToString(e.KeyCode); }
鍵盤事件-課堂範例 • 程式功能 • 將使用者目前在TextBox打的字,其印在Label上 • 程式內容 • 拉一個TextBox和Label • 在TextBox的KeyPress事件程式碼中打入 private void textBox1_KeyDown(object sender, KeyPressEventArgs e) { label1.Text =Convert.ToString(e.KeyChar); }
鍵盤事件-課堂練習 • 程式功能 • 拉三個TextBox,讓使用者可以再按了Enter後就將焦點跳到下一個TextBox
鍵盤事件-課堂練習 • 程式功能 • 寫一個程式,有一個TextBox和一個Label • 讓TextBox為焦點的時候不論打甚麼鍵,Label都可以顯示出那個鍵,字母的大小寫也會區分
Outline • 鍵盤事件 • 檔案存取 • 動態產生控制項與事件程式碼
檔案存取 • 檔案的讀取寫入指令 • System.IO.File.WriteAllText(檔案路徑,文字內容); • 要存text的地方=System.IO.File.ReadAllText(檔案路徑);
檔案存取-課堂範例 • 程式功能 • 將text file讀入 • 程式內容 • 在c底下建一個file叫Test.txt,隨便亂打一些內容 • 拉一個button和一個TextBox • 將TextBox的Multiline設為true • 在button的click事件當中做讀檔動作 private void button1_Click(object sender, EventArgs e) { textbox1.text=System.IO.File.ReadAllText(“c:\\Test.txt”); }
檔案存取-課堂範例 • 程式功能 • 將textbox內容寫入text file • 程式內容 • 拉一個button和一個TextBox • 將TextBox的Multiline設為true • 在TextBox內隨便打一些內容 • 在button的click事件當中做寫檔動作 private void button1_Click(object sender, EventArgs e) { System.IO.File. WriteAllText(“c:\\Test2.txt”, Textbox1.text); }
檔案存取 • OpenFileDialog控制項 • C#內建的開檔對話視窗 • 提供了方便的檔案瀏覽與選擇的功能 • 請注意,他並不會幫你真的完成開檔的功能
檔案存取 • OpenFileDialog控制項 • 用 “OpenFileDialog物件名稱.ShowDialog()”可把對話框打開 • “OpenFileDialog物件名稱.ShowDialog()”有回傳值,判斷回傳值即可知使用者是否按了確定 • 回傳值為DialogResult型別
檔案存取-課堂範例 • 程式功能 • 建立一個button,按了即可開啟開檔對話框 • 程式內容 • 拉一個button、一個OpenFileDialog、一個Label • 在button的click事件當中做讀檔動作 private void button1_Click(object sender, EventArgs e) { if(openFileDialog1.ShowDialog()==DialogResult.OK) { string filename = openFileDialog1.FileName; label1.Text = filename; } }
檔案存取-課堂練習 • 程式功能 • 建立一個TextBox • 建立可讀寫檔案的功能
檔案存取 • MenuStrip控制項 • 主功能表的控制項 • 支援多下拉多個選項的功能
檔案存取 • MenuStrip控制項 • 很方便的可創造出多個選項 • Double-click你創造好的選項即可編寫程式碼
檔案存取-課堂範例 • 程式功能 • 建立一個MenuStrip,含有一個下拉選項 • 下拉選項有兩欄,開檔和讀檔 • 建立一個Label • 在按開檔時Label會顯示開檔 • 在按讀檔時Label會顯示讀檔 • 程式內容 private void 開檔ToolStripMenuItem_Click(object sender, EventArgs e) { Label1.text=“開檔”; } private void 讀檔ToolStripMenuItem_Click(object sender, EventArgs e) { Label1.text=“讀檔”; }
檔案存取-課堂練習 • 程式功能 • 將開檔讀檔功能建立進MenuStrip裡
檔案存取 • PictureBox控制項 • 可用來放Gif 、Jpeg等圖檔 • 屬性 • Image-設定想要放置的圖片 • SizeMode-調整圖片在控制項中的呈現方式
檔案存取 • PictureBox控制項 • 動態讀取圖檔 • pictureBox1.Image = system.Drawing.Image.FromFile(“c:\\mypicture.jpg”);
檔案存取-課堂練習 • 程式功能 • 有動態讀取圖片的功能的程式 • 可透過MenuStrip及OpenFileDialog來讀圖檔
檔案存取-課堂練習 • 程式功能 • 紅綠燈 • 紅燈3秒,綠燈5秒,黃燈1秒 • 提示 • 利用Timer來做
Outline • 鍵盤事件 • 檔案存取 • 動態產生控制項與事件程式碼
動態產生控制項與事件程式碼 • 除了在設計畫面下自己拉控制項以外,控制項可以動態產生 • 語法 • 物件類別 物件名稱=new 物件類別(); • Controls.Add(物件名稱);
動態產生控制項與事件程式碼-範例 • 程式功能 • 按下button時則產生一個TextBox • 程式內容 private void button1_Click(object sender, EventArgs e) { TextBox t1 = new TextBox(); Controls.Add(t1); }
動態產生控制項與事件程式碼-練習 • 程式功能 • 按下button時則產生一個TextBox,並置於表單中間 • 提示 • 利用Top,Left屬性控制位置 • 用this.size來得到表單的長寬
動態產生控制項與事件程式碼 • 我們還可以幫這些動態產生的控制項加事件 • 語法 • 物件名稱.事件名稱+=new EventHandler(函式名稱); • 然後在下面寫一個處理函式 • 這個函式除了名字外,其他參數等都要和正式的事件處理函式一樣
動態產生控制項與事件程式碼-範例 • 程式功能 • 按下button時則產生一個TextBox • 程式內容 private void button1_Click(object sender, EventArgs e) { TextBox t1 = new TextBox(); Controls.Add(t1); t1.Click += new EventHandler(ck); } private void ck(object sender, EventArgs e) { t1.Width = 100; }
動態產生控制項與事件程式碼-練習 • 程式功能 • 建立一個button • 按下button時則產生一個PictureBox,並load一張圖到其上
課後作業 • 計算機 • 具有10個數字鍵 • 具有加減乘除、mod鍵、等於鍵、清除鍵 • 按按鍵也可以輸入