저는 C#으로 WinForm 애플리케이션을 작성하고 있습니다. Button
클릭에 Form C
을 여는 Form A
이 있습니다. 이제 Form C
을 열기 전에 비밀번호 입력 화면 Form B
을 추가하고 싶습니다. 입력 한 암호가 올 Y 르면 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
의 두 번째 if
문에 도달하지 않습니다.
편집 : 올바른 암호를 입력하고 Form B
의 버튼, Form A
에서 result
는 "DialogResult.Cancel`를 얻을 수
* "이것은 작동하지 않는 것 같습니다."* - 매우 유익한 발언은 아닙니다. 그 라인에 도달했을 때 당신은 무엇을 기대하고, 대신 무엇을 보았습니까? 'BtnClick'의 상단에 중단 점을 넣었습니까? 그리고 실제로 호출되는 것을 확인했습니다. 그리고 코드를 통해 기대하는 경로를 실제로 따르고 있습니까? –
사과드립니다. 몇 문장을 건너 뛰었으므로 방금 문제를 수정했습니다. 폼 B에 올바른 비밀번호를 입력 했는데도 내 C 코드가 열리지 않습니다. –
FormC를 여는 코드가 없습니다. 일부를 추가하십시오. –