山崎はるかのメモ
会社情報 | サイトマップ・検索
RSS

VB6フォームのイベント順序

Order of Events in Visual Basic 6.0 (VB6) Windows Forms

△メモ一覧にもどる


VB6/VBAのメンテナンスで

久しぶりにVB6.0/VBAを使うと、イベントの名前や発生順序を忘れていて戸惑う。

「まぁ頻繁じゃないから…」と、テストコードを毎回書いてきたけど、もうね。ここにきてさすがにまとめておくことにした。

ほんとうにネットにないんだよね、イベント順序。

VBは発売から20年を超えてるはずなのに.

 

スタートアップフォーム

プロジェクトのスタートアップに指定されたフォーム

 

Startup Form 操作
起動(Startup)Form 最小化 最大化 最大から通常 Formの×で閉じる Unload Me
イベント Initialize ・1          
Load ・2          
Resize ・3 ・1 ・1 ・1    
Activate ・4          
Paint ・5   ・2      
Deactivate            
QueryUnload         ・1 ・1
Unload         ・2 ・2
Terminate         ・3 ・3

(数字は発生するイベントの順序)


他のフォームから操作

他のフォームやモジュールからの操作

 

 Form 操作
Set obj = New Form obj.show Show Visible
True
→False
Visible
False
→True
*.Unload
Unload *
Set obj = New Form

Set obj = Nothing
イベント Initialize ・1   ・1        
Load   ・1 ・2        
Resize   ・2 ・3        
Activate   ・3 ・4        
Paint   ・4 ・5   ・1    
Deactivate              
QueryUnload           ・1  
Unload           ・2  
Terminate             ・1
Form 操作
最小化 最小から通常 最大化 最大から通常 ×で閉じる フォームの
パブリック変数を
外から初めて読む
フォームの
プロパティを
外から初めて読む
イベント Initialize           ・1 *1
Load             ・2
Resize ・1 ・1 ・1 ・1      
Activate   *2 *2 *2      
Paint   ・3 ・3        
Deactivate              
QueryUnload         ・1    
Unload         ・2    
Terminate              

・通常は発生する
*条件によって発生する
(数字は発生するイベントの順序)

コラム - 「Set ~ = New」と「Dim ~As New」は、異なる


ボタン

フォーム上のコマンドボタンを押したときのイベント順

 

CommandButton 操作
ボタンを押す
イベント MouseMove ・1・5
(最初と終わりで発生する)
MouseDown ・2
Click ・3
MouseUp ・4

(数字は発生するイベントの順序)


クラス

クラスイベント(事実上のコンストラクタ/デストラクタ)
これ見るたびに、Newで引数を渡せたら可読性があがるのになぁと思う。

 

一般のClass 操作
Set obj = New Class Set obj = Nothing
イベント Initialize ・1  
Terminate   ・1
既定のインスタンスを
持ったClass
操作
クラス内の
プロパティ・
ファンクション・
パブリック変数
を使用したとき
プログラム
が終了するとき
イベント Initialize ・1  
Terminate   ・1

コラム - 既定のインスタンスを持ったClassとは


2018/11/22・山崎はるか