在應用程式中,當某些功能只給特定開發使用時(如測試模式開啟、特定按鈕選用、特定頁面等等....),可利用輸入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