[C#] tabControl + 自製passwordbox應用

在應用程式中,當某些功能只給特定開發使用時(如測試模式開啟、特定按鈕選用、特定頁面等等....),可利用輸入password才可開啟功能的方法來達成目的,在此篇文章搭配tabControl來進行範例。

如上圖所示,該應用程式一開始顯示的Form為Form1,當使用者想切換到tabPage2時,將跳出一個輸入Password的Form,輸入正確密碼時才能切換到tabPage2。

 

passwordForm:

首先在該專案中,建立一個passwordForm當作輸入password的Box,其布局如下圖所示

接著再該TextBox PasswordChar屬性設為 " * ",在TextBox輸入文字變會自動變為* 星號

該passwordFormt Code如下

        private void okbtn_Click(object sender, EventArgs e)
        {
            if (passwordtB.Text == "password")
            {
                this.DialogResult = DialogResult.OK;
            }
            else
            {
                this.DialogResult = DialogResult.Cancel;
            }

        }

        private void passwordtB_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyData == Keys.Enter)
            {
                okbtn_Click(sender, e);
            }
        }

當按下OK Button時,將判斷password TextBox內所輸入的字符是否正確,如果正確則將此Form的DialogResult設為OK並傳回該Result到Form1,否則傳回Cancel。

而在password TextBox的部分加入了判斷KeyDown的Function,當在該TextBox按下Enter鍵時等同於按下 OK Button鍵,無須再利用滑鼠點擊OK Button。

 

Form1:

接著Form1的布局如下圖,加入一個tabControl在Form1內

Form1的Code如下:

passwordForm psForm = new passwordForm();

在Form1中 new一個 剛剛建立的passwordForm,接著便能直接在Form1中使用 psForm.ShowDialog()呼叫passwordForm

        private void tabControl1_Selecting(object sender, TabControlCancelEventArgs e)
        {
            if (tabControl1.SelectedTab==tabPage2)
            {
                if (psForm.ShowDialog() == DialogResult.OK)
                {

                }
                else
                {
                    MessageBox.Show("密碼錯誤!!");
                    e.Cancel = true;
                }
            }
           
        }

加入tabControl_Selecting Function,當使用者點擊選擇tabPage時,都會進入該Function內,當使用者點擊 tabPage2時, 使用psForm.ShowDialog()呼叫 passwordForm,當輸入密碼正確時,passwordForm回傳DialogResult.OK給Form1,成功切換到page2,反之則回傳DialogResult.Cancel,並使用e.Cancel=true 取消該次Selecting