实时错误(错误 398)
各位大侠:有于我的程序引用了外部控件,当我打开时出现:实时错误'398'客户端不可用
察看帮助上说:客户端无效(错误 398)
用户控件或用户文档不能从它的容器中获取信息。此错误产生的原因及解决方法如下:
在容器附着于用户控件或用户文档之前,它试图从容器的 Ambient 属性或 Extender 对象获取信息。如果试图在 InitProperties 或 ReadProperties 事件触发前访问这些对象,将发生这种情况。例如在 Initialize 事件中,或在某些容器的 Terminate 事件中访问这些对象。
要解决这个问题,在访问这些对象之前应等待 InitProperties 或 ReadProperties 事件。
但我还是看不明白,请问高手出手
谢谢
--------------------编程问答-------------------- “在访问这些对象之前应等待 InitProperties 或 ReadProperties 事件。”
也就是等待InitProperties 事件发生之后,ReadProperties事件触发时访问;
例如:要实现用户控件在设计时边框可见,运行时边框变为不可见。
Private Sub UserControl_Initialize()
UserControl.BorderStyle =1
'如果执行以下第一句则产生“客户端无效(错误 398)”
'If UserControl.Ambient.UserMode = True Then
' UserControl.BorderStyle = 1
'else
UserControl.BorderStyle = 0
'end if
End Sub
Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
'如果放到这个事件中执行就不会产生“客户端无效(错误 398)”的错误了
If UserControl.Ambient.UserMode = True Then UserControl.BorderStyle = 0
End Sub
附录
nitialize和ReadProperties的区别
UserControl对象的Initialize和ReadProperties都提供象窗体的Load事件一样的功
能。两者的主要的区别是,Initialize事件发生时,控件还未出现在容器中,所以容器
的扩展器(Extender)和AmbientProperties对象还未有效。而当ReadProperties事件发
生时,控件就已出现了。
注释 ReadProperties事件在控件第一次在窗体上实现时不发生,取而代之的是Ini
tialize事件。
--------------------编程问答-------------------- 楼主,你的结贴率实在让人无语,10分也抠门到家了
补充:VB , 基础类