こんにちは!
今日は「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で解除もできる
どっちもできるので、場面によって使い分けるといいですね。
ちょっとした初期化でも、こういう基本的なイベントを押さえておくと、アプリ開発がぐっと楽になります。
ぜひ、試してみてくださいね!
ではでは、また次の記事でお会いしましょう〜。