2013-10-15 1 views
0

나는 여러 가지 양식으로 구성되어 있으며 달성 할 수없는 특정 양식 규칙으로 프로젝트를 열어보고 싶습니다.모달 양식과 비 모달 양식의 프로젝트 수준 개념

먼저, 여기에 기본 양식은 "Form1에가"다음 "Form11"와 "Form111가", "Form12"및 기본 폼에서 "form121"

는 "Form1에"나는 단지 형태를 시작할 수있다 "Form11"와 " "이런이 상황에서

Public Class Form1 

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
    Form11.Show() 
End Sub 

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click 
    Form12.Show() 
End Sub 

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click 
    Me.Close() 
End Sub 
End Class 

,"Form12 Form11 "와"Form12는 모든 형태를 닫습니다 무엇을 Form1 ""나는 쉽게에서 버튼 4를 눌러 응용 프로그램을 종료 할 수 있습니다 보여 주었다된다 ".

지금, 여기 또 다른 형태이다, 나는 "Form11"의 버튼을 클릭하여 모달 열고 "Form111"...

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
    Dim f As New Form111 
    f.ShowDialog(Me) 
    f = Nothing 
End Sub 

그리고 여기 내 프로젝트의 일부 오해 또는 오해가있다.

"Form111"을 열었을 때 "Form11"을 차단하지만 "Form1"이 아닌 "Form2"를 열거 나 비공식 양식 "Form11"의 모달 양식 "Form111" 열립니다.

설명 된 프로젝트 구성 및 방법으로 이러한 기능을 구현할 수 있습니까?

+1

Project + Properties에서 종료 모드 설정을 "마지막 양식을 닫을 때"로 변경하십시오. Application.Exit()을 사용하여 앱을 강제 종료하십시오. –

+1

또한 sidenote로 f = dis가 아닌 f.dispose를 수행해야합니다. – peterG

답변

1

첫 번째 블록의 버튼 클릭 코드가 올바르지 않을 수 있습니다. 양식의 이름이 Form11Form12 인 경우 해당 클래스 이름입니다. 그들은 Form111과 같이 인스턴스화되어야합니다.

이유 응용 프로그램이 닫히는 이유는 양식 (Me)이 시작 양식으로 설정 되었기 때문입니다. /가 닫히면 앱이 종료됩니다. 프로젝트 속성에서 마지막 양식을 닫으면 앱이 종료되도록 변경할 수 있습니다.

귀하의 질문에 대해서는 "블록""Form11" but not "Form1" 대화 상자를 사용하는 경우 대답은 '아니오'입니다. 양식은 Modal (차단중인 항목) 또는 Modeless입니다. Form111이 정상에 머물러 있다고 말할 수는 있지만 다른 형태를 "차단"하지는 않습니다.

당신이하려는 것은이 양식에 대한 작업이 필요에 따라 잘 조직되거나 계획되지 않았을 수도 있음을 나타냅니다.

+0

나는 내가 할 수있는 한 더 잘 설명 할 수 있도록 최선을 다한다. 그러나 나는 충분하지 않다. 나는 논리적이고 기능적인 방식으로 프로젝트를 조직하려고 노력하고있다. 나는 어떤 순간에 응용 프로그램을 닫을 수있는 Form1이 될 Form1을 갖고 싶습니다. –

+0

해결책을 찾았습니다! Form111은 인스턴스화되어 있어야하며 모달이 아니어야합니다 (.Show (Me)). Form111의 _Load 안쪽에서 Me.Owner.Enabled = False와 _FormClosing Me.Owner.Enabled = True를 수행해야합니다. 그렇게하면 Form111 (모달처럼 동작하지만 그렇지 않은 경우)이 표시되지만 Form1과 동시에 Form11 및/또는 Form111에서 전체 응용 프로그램을 닫거나 "수신 대기"할 수 있습니다! ::행복 –

관련 문제