我正在迁移一个VB6应用程序,该应用程序有一个子程序可以触发QueryClose
表单事件。据我所知,System.Windows.Forms
中不再存在此事件。
我使用断点进行了测试,当您单击VB6表单右上角的红色“X”时,QueryClose
会触发,就像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 Upgrade Companion(VBUC)进行了介绍。 VBUC显然不认为存在等效事件,或者不够聪明以进行那种转换。 FWIW,我正在使用Microsoft Visual Basic 2010 Express。
答案 0 :(得分:2)
我想说使用FormClosing它是最接近你习惯的东西。提高MessageBox以提示是否有要清理的内容,然后继续或相应地中止关闭。
答案 1 :(得分:2)
我会把你的代码放在FormClosed()
中您的代码不允许用户取消表单关闭,它所做的就是保存一些数据。