2012-05-29 69 views
2

我正在遷移VB6應用程序,該應用程序具有一個觸發QueryClose窗體事件的子例程。據我所知,這個事件不再存在於System.Windows.FormsVB.NET中的QueryClose窗體事件等效事件

我測試了一個斷點,並且QueryClose在您點擊VB6窗體右上角的紅色「X」時觸發,就像FormClosing事件應該在VB.NET窗體中執行的操作。

我的問題是:FormClosing是否具有與QueryClose最相近的功能,還是應該使用其他事件?

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 

此代碼最初是VBA/VB6,我通過ArtinSoft的的Visual Basic升級伴侶(VBUC)放。 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的宏。我必須首先將形式_(或其他你稱之爲的)移植到VB6中,然後才能將它們轉換爲VB.NET。 – Wingman4l7

+0

@BobRiemersma:當然VBA有UserForms,可能與VB6中的稍有不同。 – Cylian

回答

2

我會把在FormClosed你的代碼()

您的代碼不允許用戶取消形式接近,它的作用是保存一些數據。

+0

我不知道我是如何錯過該屬性的事件 - 謝謝! – Wingman4l7

+2

如果你希望在創建和顯示錶單之後,但在用戶開始點擊事物之前發生事情,Form.Shown是另一個不錯的選擇。 – SSS

2

我會說使用FormClosing它是最接近你的習慣。提高MessageBox以提示是否有要清理的內容,然後繼續或中止Close。