今回は、VB.NETで、イベントの実装を別フォームで行う方法を解説していきます。
本記事では、サンプルとして、Form3内にあるボタンをクリックされたときに、別クラスであるForm2でそのイベントの実装を行うといった内容になります。
メインとなるクラスで複数の画面のイベントを管理したり、呼び出し元のクラス(フォーム)上でのプログラムに関連付けて動作させたいときなどに有効です。
本記事が少しでも参考になれば幸いです。他の関連記事はこちら
無料オンライン相談を活用しよう!
Pythonというプログラミング言語は機械学習の人気の高まりなどもあり、様々なスクールが無料説明会を開催しています。
その中でも「Freeks(フリークス)|業界初!10,780円のサブスク型プログラミングスクール」がオススメです。Pythonを効率よく学びたいという方はまずは適性を知るためにも無料説明会を利用しましょう。
別フォームのイベントハンドラに対応する方法の概要
本タイトルの意味から説明します。
例えば、Form2からForm3への画面遷移があった時、Form3上のボタンクリックやForm3を閉じるときのイベントをForm2上に記述することができる機能があります。
本来は、Form3上のイベントの実装は「Class Form3」内に書きます。
しかし、複雑な画面遷移を行う場合は、別フォームのイベントハンドラの実装を同じクラス内で行った方が便利なこともあります。
今回は、上記の内容を実装する記事となります。
参考はこちら
ソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Public Class Form2 Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load ' NOP End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim POPUP As New Form3 POPUP.Show() AddHandler POPUP.Button1.Click, AddressOf form3ButtonClicked End Sub Private Sub form3ButtonClicked(sender As Object, e As EventArgs) MessageBox.Show("Form3.Button1がClickされたよ。") End Sub End Class |
ソースコードの解説をしていきます!
本実装の肝となるのは、上記コードの11行目と14行目~18行目です。
Formをnewしてインスタンスを生成したタイミングで、そのフォームに対するイベントを「AddressOf」で同じクラス内に定義することが可能です。
この機能を用いることにより、クラス内のグローバル変数やprivateメソッドを利用しやすくなるメリットがあります。
ちなみにこの別フォームのイベントを取得することを「プロシージャのアドレスを取得」とも言うそうです。
実行結果
まずは、Form2上のボタンをクリックします。
ボタンをクリックするとForm3が別のフォームとして表示されます。
Form3のボタンをクリックすると、Form2のメソッド「form3ButtonClicked」が実行されます。
まとめ
今回は、VB.NETで、イベントの実装を別フォームで行う方法を解説しました。
イベント実装を別フォームで行うには、関連するイベントに対して「AddressOf」で定義することで可能です。
この機能を用いることにより、クラス内のグローバル変数やprivateメソッドを利用しやすくなるメリットがあります。
ちなみに、私はシステム開発時にちょこちょここの機能を利用していたので割と気に入っています。
本記事が少しでも参考になれば幸いです。他の関連記事はこちら
無料の説明会を有効活用しよう!
独学での学習は孤独感を感じやすく挫折してしまう初心者も多いです。また、参考書を購入しても全く読む気にならないという方も多いはずです。
それでも、なんとかPythonの勉強を行い、高スキルなエンジニアを目指したいという方は無料で受けられるオンライン説明会に参加してみることも一つの手です。
Pythonというプログラミング言語は機械学習の人気の高まりなどもあり、様々なスクールが無料説明会を開催しています。
その中でも「Freeks(フリークス)|業界初!10,780円のサブスク型プログラミングスクール」がオススメです。Pythonを効率よく学びたいという方はまずは適性を知るためにも無料説明会を利用しましょう。