私はC#でWinFormアプリケーションを作成しています。 がButton
をクリックするとForm A
が表示されます。今、Form C
を開く前に、パスワード入力画面Form B
を追加したいと思います。入力したパスワードが正しい場合にのみForm C
が開き、それ以外の場合はエラーメッセージが表示されます。 Form B
は、TextBox
コントロールとベリファイButton
コントロールを持っています。DialogShow()を使用してパスワード入力を受け取っていません
/*Form A*/
FormB fb;
private void BtnClick(object sender, EventArgs e) {
DialogResult result;
//fb can open once at a time
if(fb == null){
fb = new FormB();
fb.FormClosed += new FormClosedEventHandler(FormB_FormClosed);
//This seems to be not working
result = fb.ShowDialog();
}
else //FormB already open. Do nothing
return;
//Only if password entered is correct, proceed
if(result == DialogResult.Yes){ //result == cancel
//Code to open Form C //Program never reaches here
}
}
//Upon closing FormB, reset it to null
private void FormB_FormClosed(object sender, FormClosedEventArgs e){
if(fb != null)
fb = null;
}
/* Form B */
private const string password = "xxxyyyzzz";
private void BtnPW_Click(object sender, EventArgs e){
bool result = Verify();
if(result){
BtnPW.DialogResult = DialogResult.Yes;
}
else{
MessageBox.Show("Error: Incorrect password");
BtnPW.DialogResult = DialogResult.No;
}
this.Close(); //Added
}
private bool Verify(){
if(TxtBox.Text == password)
return true;
else
return false;
}
このコードで何が問題なのか教えていただけますか? Form A
の2番目のif
ステートメントには到達しません。
編集:私は、正しいパスワードを入力し、Form B
上のボタンを押した場合でも、Form A
でresult
は」DialogResult.Cancel`を取得
*「これは機能していないようです」* - それは非常に有益な発言ではありません。その行に当たったときに何が見えますか?代わりに何が見えますか? 'BtnClick'の最上部にブレークポイントを置いて、実際に呼び出されていることを確認しました。そして、あなたが実際にコードを通るパスに従っていることを確認しましたか? –
申し訳ありません。私はいくつかの文章をスキップしたので、私はちょうど私の質問を修正した。フォームBに正しいパスワードが入力されていても、私のコードは 'フォームC 'を開くことはありません。 –
FormCを開くコードはありません。いくつか追加してください。 –