2012-10-06 3 views
0

안녕 사람은 1의 코드 내 양식이다Visual Basic의 : 나는 화면 만 한 번 시작 여기에 메인 화면으로 갈 수 있도록 할 때 난 내 프로그램의 일부에 붙어 서식 기억하는 설정

Public Class Form1 

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    My.Settings.Done = "Finished" 
    My.Settings.Save() 
    Me.Hide() 
    Form2.Show() 
End Sub 

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    If My.Settings.Done = "Finished" Then 
     Me.Hide() 
     Form2.Show() 
    Else 

    End If 
End Sub 

최종 클래스

또한 양식 변수의 설정에 문자열 변수를 넣었습니다. 하지만 처음 실행 한 후에는 항상 두 가지 양식을 얻으려고 시도 할 때마다 어떻게하면 두 번째 양식 만 표시 할 수 있습니까? 사용자가 처음 버튼을 클릭했을 때?

감사합니다.

답변

1

이것은 Winforms 버르 크입니다. Form.Hide() 메서드는 Visible 속성을 False로 설정합니다. Visible 속성은 Winforms의 정말 큰 거래입니다. 일반적인 .NET 스타일에서는 폼의 기본 윈도우가 가능한 늦게 게으른 방식으로 만들어집니다. 왜건 롤링을 가져 오는 Visible 속성입니다.이 속성을 true로 설정하면 큰 코드 체인이 트리거됩니다. 양식의 기본 창은 물론 모든 컨트롤의 기본 창과 필요한 경우 자동 크기 조정을 포함합니다. 그리고 Load 이벤트가 트리거됩니다.

바로 가기가 작동하는 곳에서 Visible이 True로 설정되어 있기 때문에 Load 이벤트가 트리거됩니다. Load 이벤트 핸들러에서이를 False로 설정하면 아무런 효과가 없습니다. 첫 번째 위치에서 해고 된 이유를 "실행 취소"합니다. 이런 식으로 설명 할 때 약간의 의미가 있습니다. 물론이 행동을 할 때 이해가되지 않습니다.

코드가 작동하더라도 더 많은 문제가 발생합니다. 아직 숨겨진 양식이 있습니다. 사용자가 볼 수있는 유일한 창을 닫을 때도 프로그램을 계속 실행합니다. 그 좋지 않다.

작동하는 한 가지는 마감입니다. 양식은입니다. 설정을 변경해야합니다. 프로젝트 + 속성, 응용 프로그램 탭. 종료 모드 옵션을 "마지막 양식을 닫을 때"로 변경하십시오.

Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load 
    If My.Settings.Done = "Finished" Then 
     Form2.Show() 
     Me.Close() 
    End If 
End Sub 

을하지만 많은 청소기 솔루션은 표시 할 권리가 첫 번째 양식을 선택하는 것입니다 : 지금 당신은 이런 식으로 쓸 수 있습니다. 프로젝트 + 속성, 응용 프로그램 탭에서 "응용 프로그램 이벤트보기"버튼을 클릭하십시오. 시작 이벤트 추가 :

Private Sub MyApplication_Startup(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.StartupEventArgs) Handles Me.Startup 
     If My.Settings.Done = "Finished" Then Me.MainForm = New Form2() 
    End Sub