gpt4 book ai didi

events - 为什么在编译 VB6 应用程序期间会触发事件?

转载 作者:行者123 更新时间:2023-12-02 06:25:18 28 4
gpt4 key购买 nike

我尝试编译 VB6 应用程序,但失败并出现错误“运行时错误‘91’:未设置对象变量或 With block 变量”。事实证明,用户控件的 Resize 事件在编译和调用尝试访问尚未实例化的对象的代码期间触发。

为什么在编译期间会触发事件?有什么方法可以阻止它吗?

<小时/>

编辑:我这里有一些代码,但不相关。该问题是由于 UserControl 代码(即 Initialize、ReadProperties、Resize 和 WriteProperties 事件)可能在意外时间执行而导致的。如果这些事件中的代码依赖于其他代码来初始化其任何数据结构,则很有可能会失败,因为初始化代码可能尚未执行。特别是在编译期间,什么都不应该执行!我认为这是一个错误,但我确信微软可以以某种方式合理化它。

最佳答案

这是一篇关于用户控件事件生命周期的好文章

Understanding Control Lifetime and Key Events

这是一个片段

Compiling the Project

When the project is compiled into an application or component, Visual Basic loads all the form files invisibly, one after another, in order to write the information they contain into the compiled file. A control instance gets the Initialize, ReadProperties, and WriteProperties events. The control's property settings are compiled into the finished executable.

它没有提到调整大小(这发生在运行时或在设计时物理调整容器上的用户控件的大小时)。也许您的初始化事件正在调整用户控件的大小?

为了避免错误,您可以在执行任何操作之前检查是否已创建有问题的对象:

If Not Object Is Nothing then
do something

关于events - 为什么在编译 VB6 应用程序期间会触发事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1395269/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com