在子窗体之前打开主窗体时出错

Posted

技术标签:

【中文标题】在子窗体之前打开主窗体时出错【英文标题】:Error when opening the mainform before subform 【发布时间】:2012-03-06 14:40:24 【问题描述】:

我想在子窗体之前打开主窗体(为什么?)

我的表单需要 6 秒来加载并向用户显示表单和子表单。我读到当首先加载主表单然后加载子表单和山雀数据时,打开时间可能会更好(小于 6秒)因此我尝试实现这个场景:

我在我的子窗体属性中删除了 Sourceobject 的值,并在主窗体中添加了这段代码:

Private Sub Form_Timer()
Me.TimerInterval = 0
Me!ufrm_bauteile.SourceObject = "ufrm_bauteile"
End Sub

我将 mainform 属性中的 Timerinterval 设置为 1.Logicaly 我认为它应该可以正常工作,但出现错误(错误号 2467):

您输入的表达式引用了一个已关闭或不存在的对象

如何解决这个问题?

【问题讨论】:

【参考方案1】:

当您第一次打开表单时,以下事件按此顺序发生:

打开→加载→调整大小→激活→当前

我建议您不要设置计时器,而是在您的 Load 事件处理程序中加载子表单。

Private Sub Form_Load()
    Me!ufrm_bauteile.SourceObject = "ufrm_bauteile"
End Sub

【讨论】:

+1 当然,On_Load 也比 On_Open 更好,因为它确保在尝试加载子表单之前先加载父表单。 (或者至少在绑定表单的情况下) 谢谢你们俩,我认为在我的主窗体中我有一些引用子窗体对象的对象,因此发生了该错误。如果我将此代码放在 Form_Load() 中,问题是否解决了?这个想法是否提高了性能?

以上是关于在子窗体之前打开主窗体时出错的主要内容,如果未能解决你的问题,请参考以下文章

在子窗体中输入数据时,MS Access 会自动在主窗体中填写 id

Ms Access中更新主窗体时更新子窗体的相关字段

在子窗体中设置过滤器

QT在子窗体中控制父窗体

C# winform怎么实现子窗体关闭时刷新父窗体数据

更新子窗体 Access 2010 时出错