2017-01-24 6 views
0

Form.Show()을 통해 양식을 열면 Show Event이 열리지 않습니다.Form.Load Form.Show를 사용할 때 이벤트가 발생하지 않고 Form.ShowDialog를 사용할 때 발생합니다.

그러나 Form.ShowDialog()을 사용하면 이벤트가 발생하고 내 Form_Shown 메서드에서 중단 점이 발생합니다.

예외가 이벤트를 숨기지 만 this answer을 보았지만 예외는 없습니다.

그래서 ShowDialog()으로 전화하면 이벤트가 발생하지만 Show()으로 전화하면 안될까요?

여기는 link to a demo입니다. ShowDialog() 버튼을 클릭하면 load 및 shown-event가있는 messagebox가 표시되지만 Show()의 경우 load 이벤트 만 표시됩니다.

+1

코드를 표시해야합니다. – LarsTech

+0

@LarsTech 어떤 코드입니까? 그 두 줄? 이벤트 처리기를 추가하고 Show()를 호출 하시겠습니까? 그건 의미가 없기 때문에 "내 코드가 작동하지 않는 이유는 무엇입니까?"라는 문구로 닫는 것입니다. – magicandre1981

+2

다른 일이 일어나기 때문입니다. 문제가 중복되는 게시물 코드. – LarsTech

답변

1
using (var form = new Form2()) 
{ 
    form.Show(); 
} 

표시가 코드를 차단하지 않으므로 Using 블록은 양식을 즉시 삭제합니다. ShowDialog는 양식이 닫힐 때까지 코드를 차단하므로 해당 버전이 작동합니다.

+0

나는 또한 '사용하지 않고'시도했지만 여전히 작동하지 않습니다. – magicandre1981

+0

@ magicandre1981 다시, 귀하의 질문에 코드를 게시하십시오 (다른 데모 프로젝트가 아님). 사용 블록을 제거하면로드 및 표시된 메시지가 나타나고 양식이 나타납니다. – LarsTech

+0

오케이, 사용하기에는 너무 빠른 Dispose를 사용합니다. form2에 대한 피드백을 얻은 후에 이벤트가 표시되고 form을 처리하는 form1에 send 데이터가 필요합니다. – magicandre1981