2012-05-29 4 views
2

QueryClose 양식 이벤트 발생시 서브 루틴이있는 VB6 응용 프로그램을 마이그레이션하려고합니다. 내가 알 수있는 한,이 이벤트는 더 이상 System.Windows.Forms에 존재하지 않습니다.VB2000에서 QueryClose 양식 이벤트 해당 사항

FormClosing 이벤트가 VB.NET 양식에서 수행해야하는 것처럼 VB6 양식의 오른쪽 위 모서리에 빨간색 'X'를 클릭하면 중단 점이 테스트되고 QueryClose이 실행됩니다.

내 질문은 : FormClosingQueryClose과 가장 비슷한 기능을합니까? 아니면 다른 이벤트를 사용해야합니까?

Private Sub UserForm_QueryClose(ByRef Cancel As Integer, ByRef CloseMode As Integer) 
    writeToLog() 
    writeRecentFoldersToFile(myTempFilePath & "Recent Folders.txt") 
    writePageSetupDefaultsToFile(myTempFilePath & "Page Setup.txt") 
    writeFormPositionToFile(myTempFilePath & "Form Position.txt") 
    userformKillTimer(Me, Me.Text) 
End Sub 

이 코드

원래 내가 ArtinSoft의 Visual Basic의 업그레이드 도우미 (VBUC)를 통해 넣어 VBA/VB6했다. VBUC는 분명히 동등한 사건이 있다고 생각하지 않거나 그런 종류의 전환을 수행 할만큼 똑똑하지 않습니다. FWIW, 저는 Microsoft Visual Basic 2010 Express를 사용하고 있습니다.

+1

VBA가 VB6이 아닙니다. 어쨌든 VBA에는 형식이 없습니다. 아마도 Excel을 의미할까요? VBA는 호스트 내에 만 생명력을 가지고 있습니다. VB6에는 QueryClose가 폼에없고 DataReports에만 있습니다. *이 *는 DataReport입니까? 아니면 QueryUnload를 의미할까요? 이러한 게시물을 덮어 쓰거나 잘못 태그하지 마십시오. VBA 태그 일 필요는 없지만 Excel-VBA, Access-VBA 등과 같은 태그는 모두 다른 물에서 헤엄 쳐야하기 때문에 태그가 없어야합니다. – Bob77

+0

글쎄, 원래 VBA - AutoCAD 용 매크로였습니다. VB.NET으로 변환하기 전에 먼저 VB6에 양식 _ (또는 사용자가 호출 한 것) _을 포팅해야했습니다. – Wingman4l7

+0

@BobRiemersma : Ofcourse VBA에는 UserForms가 있으며 VB6과 약간 다를 수 있습니다. – Cylian

답변

2

나는 그것이 않는 모든 일부 데이터를 저장하고,

당신의 코드는 사용자가 양식 가까이 취소 할 수 없습니다 FormClosed에서 코드를() 둘 것입니다.

+0

나는 속성에서 그 사건을 어떻게 놓쳤는지 모르겠다 - 고마워! – Wingman4l7

+2

Form.Shown은 양식을 만들고 표시 한 후에 물건이 나타나기를 원하지만 사용자가 물건을 클릭하기 전에 또 다른 좋은 방법입니다. – SSS

2

저는 FormClosing을 사용하는 것이 익숙한 것에 가장 가까운 것이라고 말합니다. MessageBox를 올리면 정리해야 할 것이 있는지 묻는 메시지가 표시됩니다. 그런 다음 Close를 계속하거나 중단합니다.