很长时间不用 vb6,最近整理一个老程序,决定把分散在各处的 msFlexGrid 的处理集中起来,主要是使 msFlexGrid 的可写处理写在一个类里——现在几乎每个窗体都有一个近似的代码 copy。
在封闭事件时出现了问题:在类内定义了 Dim WithEvents m_FG As MSFlexGrid,然后定义 Private Sub m_FG_KeyPress(KeyAscii As Integer) 事件,结果测试时该事件总是不能执行。
这个问题一直困扰半天,查遍资料也无解。
最后发现在调用方:
sub form_load()
dim fg_ as 类
set fs_.FG=me.FG
end sub
这个类对象定义到了过程内,这样过程运行结束,对象也就消失,怎能处理事件?把该对象定义到过程外,问题解决。 这其实是小问题,因为长期不用 vb,所以没有注意到。