UGN Security
Hello, All:

Recently I have been annoyed by the following question very much. It will be highly appreciated if anyone could help me!

I want to refer to some properties or controls in another form while I don't want to declare too much public variables.

For example, in module1, I want to get hwnd of frmMain:

hwnd = frmMain.hwnd

Here is my question:

When call the properties or control outside a form through the form name,

1. the event Form_Load (or Form_Initialize) will also be triggered in some projects;
2. while in some other projects, Form_Load (or Form_Initialize) will not be triggered and I can call it just as a variable.

In which cases Form_Load will be triggered and in which not?

Please help me!!! Thank you very much!
When calling a public variable or property of a unloaded form:

1) That form's Form_Load event is called
2) The public variable or property is accessed

In that order. This always happens - and the form is not displayed. It won't be displayed until you call the form's show event or set the visible property to true. It is impossible to call those members of the form without first loading it.

Modules are the preferred choice. Modules are loaded when they are accessed and they stay loaded for the rest of that program's execution.
Hello, SilentRage:

Thank you very much!

But the case I encountered is that:

'frmMain' has finished loading. In the course of running, I need to call another procedure and in this procedure I will access some properties of frmMain. 'frmMain' remains displayed and loaded. Anyway the Form_Load in frmMain is triggered again (but in some other similar projects will not).
Form_Load will only be triggered multiple times if they are explicitly called in the code, or if you are loading duplicate forms like if you declare a variable as that form and play with it, or if the form is unloaded at any point (user presses the 'X' or the Unload method is called on it).
© UGN Security Forum