2

我正在迁移一个 VB6 应用程序,它有一个触发QueryClose表单事件的子例程。据我所知,这个事件不再存在于System.Windows.Forms.

我使用断点进行了测试,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 Upgrade Companion (VBUC) 完成的。VBUC 显然不认为存在等效事件,或者没有足够聪明来进行这种转换。FWIW,我正在使用 Microsoft Visual Basic 2010 Express。

4

2 回答 2

2

我会说使用 FormClosing 它是最接近你习惯的东西。引发 MessageBox 以提示是否有需要清理的内容,然后相应地继续或中止关闭。

于 2012-05-29T04:10:59.707 回答
2

我会把你的代码放在 FormClosed()

您的代码不允许用户取消表单关闭,它所做的只是保存一些数据。

于 2012-05-29T04:22:27.363 回答