C# 入門指南 - 整合 Encrypt

EncryptGUI 是的圖形介面使用者軟體,編碼、解碼的計算核心是由 Encrypt 來完成




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

沒有留言: