当前位置:编程学习 > VB >>

实时错误(错误 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 ,  基础类
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,