2009-09-03 2 views
0

스타일 데이터 세트를 처리하는 VB.NET에서 WinForms 앱을 개발 중이며 사용자가 다른 세트의 레이블을 클릭하면 "다른 스타일을 편집하기 위해이 스타일 사전 설정을 종료합니다."라는 대화 상자를 통해 프롬프트됩니다. 그러나 사용자가 두 옵션 중 하나를 클릭 할 때 대화 상자가 닫히면 모든 항목이 새로 고쳐 져야하고 양식을 다시로드하는 것이 어려워집니다. 좋은 옵션.VB.NET :이 경우 대화 상자를 닫고 다시 여는 방법은 무엇입니까?

나는이 작업을 수행하는 모듈에 공개 서브를 넣어 시도했다 :

Public Sub CloseOpenStyleDlg() 
    KeepOrDiscardPrompt.Close() 
    StylesDlg.Close() 
    StylesDlg.ShowDialog() 
End Sub 

그러나 즉시 그 하위가 프롬프트에서 호출 될 때,이 응용 프로그램을 충돌합니다. (디버그 오류를 표시하지 않습니다, 단순히 충돌) 주어진 대화 상자에서 대화 상자를 닫고, 부모이고, 다시 열어야합니까? (부모의 모든 Dialog_Load() 코드를 트리거 함)

미리 감사드립니다! :)

답변

1

대화 상자를 다시 인스턴스화해야합니다. 예를 들어 코드를 가져 가면 :

Public Sub CloseOpenStyleDlg() 
    KeepOrDiscardPrompt.Close() 
    StylesDlg.Close() 
    StylesDlg = new StylesDlg() 
    StylesDlg.ShowDialog() 
End Sub 
+0

감사합니다.) Form_Load() 외부에서 코드를 다시 배열 했으므로 이제부터는 항상 베스트 프랙티스를 준수 할 것입니다. (심하게 작성된 코드는 그렇게 지옥 같아요!)하지만 예제를 통해 내 의심을 해결할 수 있습니다. 양식을 다시 여는 방법, 그래서 선택했습니다 =) –

0

양식을 닫으면 개체 내에 만들어진 모든 리소스가 닫히고 양식이 삭제됩니다.

Window 인스턴스를 다시 사용하려면 StylesDialog.Hide() 함수를 대신 사용하십시오.

+0

그러나 hide는 Form_Load() 이벤트를 다시 호출합니까? 직관적으로, 나는 그것을 보이지 않게 만드는 것 같았지만 닫지 않았다. –

+0

테스트하지 않았지만 Show를 다시 호출 할 때 Form_Load()가 호출되지 않는다고 가정합니다. –

+0

폼을 숨기면 Load 이벤트가 발생하지 않습니다. 다시 호출해야하는 초기화 코드가있는 경우 Form_Load 메서드에서 제거하고 다른 메서드에 넣고 명시 적으로 호출 할 수 있습니다. – snarf

관련 문제