encryptgui.cs 完整的範例程式碼,請參考encryptgui.cs
整合 Encrypt 到 EncryptGUI 的第一步,我們先把放 Encrypt 的 encrypt.cs 移到與 encryptgui.cs 相同的目錄(資料夾)下,因為等一下這兩個檔案要一起編譯。
然後先 using Encryptor 名稱空間 (namespace)
using Encryptor;
接著建立兩個 string 型態 (type) 與一個 Encrypt 型態的屬性 (property)
private string inputText; private string outputText; private Encrypt e;
inputText 用來儲存使用者的輸入, outputText 則儲存編碼後的結果。
首先在 inputField 設定 KeyPress 屬性,這個屬性會在鍵盤輸入時連動
this.inputField.KeyPress += new KeyPressEventHandler(this.inputField_KeyPress);
使用者在 inputField 輸入任何字元,這些字元都會由 inputField_KeyPress() 印出到 displayLabel
private void inputField_KeyPress(object sender, EventArgs e) { this.inputText = this.inputField.Text; this.displayLabel.Text = "Your input is \"" + this.inputText + "\"."; }
下面 New 按鈕設定屬性 e
this.newButton.Click += new EventHandler(this.newButton_Click);
newButton_Click() 除了新建 Encrypt 外,也在 displayLabel 顯示 Encrypt 的 Code
private void newButton_Click(object sender, EventArgs e) { this.e = new Encrypt(); this.displayLabel.Text = this.e.Code; }
Encode 為進行編碼的按鈕
this.encodeButton.Click += new EventHandler(this.encodeButton_Click);
我們在 encodeButton_Click() 做了個錯誤防範機制,如果 inputText ,也就是使用者沒有在 inputField 輸入英文字元的話,就會在 displayLabel 顯示提示訊息。當然,如果使用者有輸入英文字元就直接呼叫 e 的 toEncode() 進行編碼,並將編碼結果顯示在 outputField
private void encodeButton_Click(object sender, EventArgs e) { if (this.inputText == "") { this.displayLabel.Text = "This is Encode button. No input string!!"; } else { this.outputText = this.e.toEncode(this.inputText); this.outputField.Text = this.outputText; this.displayLabel.Text = "This is Encode button. The result is above."; } }
Decode 為進行解碼的按鈕
this.decodeButton.Click += new EventHandler(this.decodeButton_Click);
decodeButton_Click() 與 encodeButton_Click() 類似
private void decodeButton_Click(object sender, EventArgs e) { if (this.inputText == "") { this.displayLabel.Text = "This is Decode button. No input string!!"; } else { this.outputText = this.e.toDecode(this.inputText); this.outputField.Text = this.outputText; this.displayLabel.Text = "This is Decode button. The result is above."; } }
來編譯測試看看囉!輸入 "There is no spoon." ,然後點擊 Encode
咦?程式突然結束,然後命令列顯示一堆訊息,我們找到了 NullReferenceException ,這是說屬性 e 還是 null , mono 執行時直接發起了例外 (exception) ,因此我們該做一下例外處理。
中英文術語對照 | |
---|---|
名稱空間 | namespace |
型態 | type |
屬性 | property |
例外 | exception |
您可以繼續參考
GUI 篇
相關目錄
回 C# 入門指南
回 C# 教材
回首頁
參考資料
http://msdn.microsoft.com/zh-tw/library/ms173109%28v=vs.80%29.aspx
http://msdn.microsoft.com/zh-tw/library/x9afc042.aspx
http://msdn.microsoft.com/zh-tw/library/ms229036%28v=vs.80%29.aspx
http://msdn.microsoft.com/zh-tw/library/0b0thckt.aspx
沒有留言:
張貼留言