こんにちは!
今日は「VB.NETのWPFアプリで、画面ロード時のイベント(Loadedイベント)を登録する方法」について書きたいと思います。
WPFアプリを作っていると、「画面が表示されたときに初期化処理をしたい!」ってこと、よくありますよね。そんなときに使うのが Loaded イベントです。でも、どうやって登録するのが正解なんだろう?と迷うこともあるはず。
そこで今回は、基本的なやり方を順番に紹介しながら、どっちを選ぶといいかも一緒に考えてみたいと思います!
動作確認環境
- Visual Studio 2022
- .NET9
- WPF
ソースコードはこちらに置いておきます。
まずは基本:XAMLで登録する方法
一番シンプルなのは、XAMLファイルに直接書く方法です。
例えばこんな感じ。
<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525"
Loaded="Window_Loaded">
<Grid>
</Grid>
</Window>ここで Loaded="Window_Loaded" と指定してあげると、VBコード側(MainWindow.xaml.vb)にこんなイベントハンドラを用意できます。
Class MainWindow
Private Sub Window_Loaded(sender As Object, e As RoutedEventArgs)
' ここにLoaded時の処理を書く
MessageBox.Show("ウィンドウがロードされました")
End Sub
End Classこれで、ウィンドウが表示されたときにポコンとこんな感じのメッセージが出てきます!

すごく直感的でわかりやすいですよね。
次に:コードビハインドで登録する方法(AddHandlerを使う)
もう一つのやり方が、コード側で登録する方法です。
具体的には、こんなふうに AddHandler を使います。
Class MainWindow
Public Sub New()
InitializeComponent()
AddHandler Me.Loaded, AddressOf MainWindow_Loaded
End Sub
Private Sub MainWindow_Loaded(sender As Object, e As RoutedEventArgs)
' ここにLoaded時の処理を書く
MessageBox.Show("ウィンドウがロードされました(コード登録)")
End Sub
End Classここでは InitializeComponent() の後に AddHandler でイベントを登録しています。
つまり、XAMLでは何も書かなくてOK。全部コードだけで完結できます。
この方法の良いところは、動的に作ったコントロールにも同じように使えることです。たとえば、実行時にボタンを作って、そのボタンにイベントを付ける…みたいな場面でも便利なんですよね。

イベントの解除方法(RemoveHandler)も覚えておこう!
ここでワンポイント。
AddHandler でイベントを登録したら、場合によってはイベントを解除したいときもあります。
そんなときは、RemoveHandler を使います!
書き方はとってもシンプルです。
RemoveHandler Me.Loaded, AddressOf MainWindow_Loaded
登録したときと同じ組み合わせ(イベントとメソッド)を指定してあげればOK。
たとえば、ウィンドウを閉じる直前にイベントを解除してメモリリークを防ぎたいときなどに使えます。
ポイント: AddHandler したら、必要に応じて RemoveHandler も考えておくと、より安全なコードになります!
結局、どっちを使えばいいの?
ここでちょっと迷いますよね。
ざっくり言うと、こう考えるといいです!
- 単純な画面なら → XAMLで登録
- たくさんコントロールを動的に作るなら → AddHandlerでコード登録
たとえば、「設定画面を作っていて、初期値を読み込んでセットする」みたいなときは、XAMLにサクッと Loaded="Window_Loaded" と書いちゃったほうがスッキリします。
逆に、「ユーザーが選んだ項目に応じてコントロールを動的に増やす」みたいな高度なことをやるときは、AddHandlerを使ったほうが柔軟に対応できます。
小さな注意ポイント
ちょっと細かいですが、Loaded イベントは「画面が描画された直後」ではなく、「レイアウトが終わったタイミング」で発生します。
つまり、見た目の表示が完全に終わったわけではないこともあるので、重たい処理をするときは注意したほうがいいです。
本当に描画完了後に何かしたいなら、ContentRendered イベントを使う、という手もあります。
でも普通の初期化くらいなら、Loaded で十分です。
というわけで
VB.NETのWPFで「画面ロード時のイベントを登録する方法」について紹介してきました!
- XAMLに書くか
- コードでAddHandlerするか
- 必要に応じてRemoveHandlerで解除もできる
どっちもできるので、場面によって使い分けるといいですね。
ちょっとした初期化でも、こういう基本的なイベントを押さえておくと、アプリ開発がぐっと楽になります。
ぜひ、試してみてくださいね!
ではでは、また次の記事でお会いしましょう〜。
