2013-02-19 3 views
1

내 코드에서 End을 여러 번 사용하여 닫는 양식이 있습니다.이라는 공개 설정을 저장하고 INI 파일에 저장하는 명령을 저장하고 싶습니다. 나는 메인 윈도우의 FormClosing (전체에서 열려 있음)에 넣으려고했는데, 이것은 내 End 문에서 X 버튼을 누르지 않고 닫을 때만 작동합니다.양식을 닫는 모든 방법을 감지하는 가장 좋은 방법은 무엇입니까?

내가 꽤 그럼에도 불구하고 귀하의 질문에 의해 혼란 스러워요
+1

양식을 닫는 모든 방법을 감지하는 가장 좋은 방법은 '종료'를 호출하지 않는 것입니다. 기본 양식을 닫으십시오. 또한 INI 파일은 기존 기술이므로 가능한 경우 "내 프로젝트"탭의 설정을 사용해보십시오. – LarsTech

+1

분명한 대답은 '끝'으로 양식을 닫지 않는 것입니다. 이것이 바로'Form.Close' 메쏘드입니다. – JosephHirn

+0

@LarsTech My.Settings가 INI로 다시 전환하기를 좋아하지 않았습니다. 다른 응용 프로그램 (예 : 설치 프로그램)을 쉽게 읽을 수 있습니다. – RX14

답변

2

이 추가 및 교체 통화 0123에 대한 호출과 함께 End

Sub EndMe() 
    VarsToIni() 
    Application.Exit() 
End Sub 

편집 : 단으로

지적, End()이 응용 프로그램을 종료하는 나쁜 방법입니다 Application.Exit() 바람직하다.

+0

이 방법을 사용하고 있습니다. – RX14

+0

그럼 당신은 여전히'End' ... IMO'End' <'Application.Exit()''Shutdown mode : 시작 폼이 닫힐 때 '. 'End' 호출을 무언가로 대체하는 한, 그것을'Application.Exit()'으로 만들고, 메인 폼의'Closing' 이벤트에서 좀 더 설득력 있고 더 많은 옵션/컨트롤을 처리하도록 처리하십시오. 적어도이 Q & A에 걸려있는 다른 사람들은 더 이상 생각하지 않으면이 대답을 받아들이지 않아야합니다. – djv

+0

@DanVerdolino 나는 동의하고 개정했다. – bendataclear

0

:
이 종료됩니다 모든 형태의

For each x as Form in My.Application.OpenForms 
'You can then put your VarsToIni() here 
x.Close() 
Next 

참고 : 새 하위 추가 가져 오기

Imports System.Windows.Forms 
+0

** "주 창 FormClosing에 배치하려고했습니다."** 어떻게 생각하십니까? (그렇습니다. 그러나'End''를'FormClosing'으로 등록하지 않습니다.) 다른 폼에서'End'를 사용하는 것이 중요합니까? 내가 다른 폼에서'End'를 할 때 클로저를 감지하려고하는 폼을 닫지 만'FormClosing'을 트리거하지 않습니다. – RX14

+0

이것은 작동하지만 @bendataclear의 메소드를 선호합니다. – RX14

1

End 대신 Application.Exit()을 사용하는 것이 좋습니다. 이렇게하면 FormClosing이 무엇이든 상관없이 호출 될 수 있으며 닫히는 방식에 따라 처리 할 수 ​​있습니다.

Private Sub frmMain_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing 
    Select Case e.CloseReason 
     Case CloseReason.ApplicationExitCall 
      ' This is the result of Application.Exit() 
      e.Cancel = False 
     Case CloseReason.UserClosing 
      ' This is the result of clicking the red X 
      Select Case MessageBox.Show("Are you sure you wish to exit?", "Confirm", MessageBoxButtons.YesNo, MessageBoxIcon.Question) 
       Case DialogResult.Yes 
        e.Cancel = False 
       Case DialogResult.No 
        e.Cancel = True 
      End Select 
     Case Else 
      e.Cancel = False 
    End Select 
    If Not e.Cancel Then 
     VarsToIni() 
    End If 
End Sub 
관련 문제