2012-05-29 36 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。