A, B와 C는 내가 의한 frmA에서 frmB을 열고 내가 형태가 있다고 가정 : frmB B = new frmB(); B.show();
그리고 그때까지 frmB에서 frmC 열립니다 frmC C = new frmC(); C.show();
I 양식 A와 B를 닫지 마십시오. 사용자가 해당 양식으로 돌아가서 뭔가를 변경해야하는 경우에 대비하십시오. 그러나 사용자가 C 형식을 사용하면 양식 A로 돌아가서 양식 C와 B를 닫아야합니다. WM6.5에서이 작업을 수행하려면 어떻게해야합니까? 이것은 Android와 iOS에서 Flag Clear Top과 Pop to Root를 통해 각각 수행 한 작업이지만, WM6.5에서이 작업을 수행하는 방법에 대해 혼란스러워합니다.닫기 나머지/다른 형태 (신고 클리어 탑/루트에 팝업)
0
A
답변
1
이것은 어렵지 않지만 설계 및 계획이 필요합니다.
public class FormC : Form {
public FormC() {
this.DialogResult = DialogResult.None;
}
private void Cancel_Clicked(object sender, EventArgs e) {
this.DialogResult = DialogResult.Cancel;
Close();
}
private void OK_Clicked(object sender, EventArgs e) {
this.DialogResult = DialogResult.OK;
Close();
}
public string CustomMessage { get; set; }
}
당신은 DialogResult
속성을 설정해야합니다하십시오 CustomMessage
문자열을 가지고 OK 및 에 대한 버튼 클릭 몇 취소 지원 의 기본 버전 FormC보고에 의해
시작 FormC!
이제는 FormB으로주의를 돌리십시오. 위에서 조금 더 복잡하지만 여전히 기본적이고 이해할 수 있어야합니다. 그 폼이 닫힐 때 당신이 FormC_DialogResult
속성을 설정할 수 있도록 FormB에서
, 당신은 최대와이어 폼의 닫힌 이벤트 핸들러가 필요합니다. FormC_DialogResult
속성을 public
으로 설정하면 형식 A이 값을 사용할 수 있습니다. FormC의 OK
버튼을 클릭하면, FormB이 같은 OK
대화 결과를 얻을 수 있으며, 너무 닫혀 있는지
public class FormB : Form {
private FormC formC;
public FormB() {
this.DialogResult = DialogResult.None;
}
private void Cancel_Clicked(object sender, EventArgs e) {
this.DialogResult = DialogResult.Cancel;
Close();
}
private void OK_Clicked(object sender, EventArgs e) {
this.DialogResult = DialogResult.OK;
Close();
}
public string CustomMessage { get; set; }
public void FormC_Show() {
FormC_DialogResult = DialogResult.None;
formC = new FormC();
formC.Closed += new EventHandler(FormC_Closed);
formC.CustomMessage = "This is FormC. When it closes, " +
"it will call FormB's FormC_Closed event handler, " +
"which will set the FormC_DialogResult property.";
formC.Show();
}
private void FormC_Closed(object sender, EventArgs e) {
FormC_DialogResult = formC.DialogResult;
if (FormC_DialogResult == DialogResult.OK) {
this.DialogResult = DialogResult.OK;
Close();
}
}
public DialogResult FormC_DialogResult { get; set; }
}
알 수 있습니다.
이제 FormA에서 두 가지 양식을 모두 제어 할 수 있습니다.
public class FormA : Form {
private FormB formB;
public FormA() {
}
private void FormBShow_Clicked(object sender, EventArgs e) {
FormB_Show();
}
private void FormB_Show() {
FormB_DialogResult = DialogResult.None;
formB = new FormB();
formB.Closed += new EventHandler(FormB_Closed);
formB.CustomMessage = "This is FormB. When it closes, " +
"it will call FormA's FormB_Closed event handler, " +
"which will set the FormB_DialogResult property.";
formB.Show();
}
void FormB_Closed(object sender, EventArgs e) {
FormB_DialogResult = formB.DialogResult;
if (FormB_DialogResult == DialogResult.OK) {
if (formB.FormC_DialogResult == DialogResult.OK) {
// Update Form C information
}
// Update Form B information
}
}
private DialogResult FormB_DialogResult { get; set; }
}
오, 그리고 대표단에 오신 것을 환영합니다!