양식이 Form1
이고 모달 양식으로 Form2
이 표시됩니다. Form2
에서 나는 Form2
을 닫은 후에 Form1
에 반영되어야하는 다양한 값의 편집과 삭제를 수행합니다. 그래서 나는 Form2
을 닫은 후에 RePopulateControls_in_Form1()
입니다. RePopulateControls_in_Form1()
은 긴 프로세스이므로 Form2
에서 일부 수정 (편집, 추가, 삭제)이 발생하고 Form2
이 방금 닫히거나 열리지 않을 때만 해당 메서드를 실행하고 싶습니다.DialogResult가 폼을 닫지 않습니까?
private void bntEdit()
{
//If Edit?
this.DialogResult = DialogResult.Something;
}
private void bntAdd()
{
//If Add?
this.DialogResult = DialogResult.Something;
}
private void bntDelete()
{
//If Delete?
this.DialogResult = DialogResult.Something;
}
,
Form2 f = new Form2();
if (f.ShowDialog(this) == DialogResult.Something)
RePopulateControls_in_Form1()
을 그리고 Form2를에 내가 할하지만 내 문제는 .Something
입니다 :
그래서 이것은 내가 Form1
에서 수행하려고 할 것입니다. .None
이외의 것이면 Form2
은 단순히 닫힙니다. 나는 사용자가 그것을 닫지 않는 한 Form2
가 단순히 그것 자체에 의해 닫히기를 원하지 않는다.
나는이 할 경우
RePopulateControls_in_Form1()
명중되지 않는다!
간단히 말해, 내 프로그램에서 Form2
으로 값이 수정 된 경우에만 RePopulateControls_in_Form1()
을 호출하도록 컴파일러에 지시 할 수 있습니까?
참고 : 컨트롤이 동적으로 생성되고 약간 복잡하기 때문에 (실제로는 Form2
에서 생성 된 내용은 GUI 컨트롤 및 해당 레이블 등) Repopulating이 반드시 필요합니다.
나는 첫 번째 부분을 얻지 만, 두 번째 논리는 적절한 코딩 기술이 아닙니다! – nawfal
왜 그렇지 않습니까? 위의 경우 이벤트를 사용합니다. 그러나 20 개의 양식을 가진 응용 프로그램에서 사용되는 값이 있고 많은 클래스의 10 배가있는 경우 어떻게 하나의 값만 사용되는지 확인하십시오. 양식의 값을 생성자 매개 변수 또는 속성을 통해 클래스로 전달하는 것이 좋겠습니까? – ScruffyDuck
이것은 Form1이 Form2에 대해 알 수 있도록 플래그를 설정하는 것만 큼 간단합니다.스레드로부터 안전하지 않은 전역 변수를 사용하는 이유는 무엇입니까? 위에서 언급 한 것처럼 220 개의 클래스에서 사용해야 할 때 일반 전역 변수의 중요성을 이해합니다. 하지만 여기서 우리는 가능한 한 응용 프로그램의 전체 수명주기 동안 잠들지 않는 정적 변수를 피해야 할뿐만 아니라 더 중요한 것은 다음과 같은 질문에 언급 된 요구 사항을 어떻게 예측할 수 있을지 궁금합니다. 내 간단한 질문에서 220 수업에 고용 될 큰 : – nawfal