VB.NET Tips - コントロールのTagプロパティを各種のデータ退避として使用
VB.NETの標準コントロールには Tag プロパティがあります。
このプロパティは Form Button TextBox など全ての標準コントロールには存在します。
(標準コントロールは System.Windows.Forms.Control から派生しているので当然なのですが)
このプロパティを各種のデータの退避領域として使うのが今回の目的です。
VB.NETの「オブジェクト ブラウザ」で Tag 定義を見てみると以下の様になっています。
Tag プロパティについて
Public Property Tag As Object
System.Windows.Forms.Control のメンバー
概要:
コントロールに関するデータを格納するオブジェクトを取得または設定します。
戻り値:
コントロールに関するデータを格納している System.Object。既定値は null です。
Tag プロパティの型は
System.Object なのでどんな型のデータを設定しても良いということです。
つまり、
Integer型等の数値だったり、
Stringだったり、はたまたクラスでもOKです。
今回の例としては、クラスデータを
Tag に設定することを行います。
以下のソースをご覧ください。
1個のフォームの中にクラス宣言を行っています。
そのクラスをフォームロードイベントで、2個のボタンの
Tag に別々のクラスデータを設定します。
また、ボタンのクリック時にそのクラスのメソッドを呼び出しています。
コントロールのTagプロパティを各種のデータ退避として使用(クラスデータ)
01 | Public Class frmTagTest |
07 | Private strTest As String |
08 | Private intTest As Integer |
15 | Sub New ( ByVal astrTest As String , ByVal aintTest As Integer ) |
25 | Dim str As String = "strTest : " & Me .strTest & vbCrLf & _ |
26 | "intTest : " & Me .intTest.ToString |
34 | Private Sub frmTagTest_Load(sender As Object , e As EventArgs) Handles Me .Load |
36 | Dim tagTest1 As New ClsTagTest( "Test-aaa" , 100) |
37 | Me .Button1.Tag = tagTest1 |
40 | Dim tagTest2 As New ClsTagTest( "Test-bbb" , 200) |
41 | Me .Button2.Tag = tagTest2 |
47 | Private Sub Button_Click(sender As Object , e As EventArgs) Handles Button1.Click, Button2.Click |
49 | Dim tagTest As ClsTagTest = DirectCast (sender, Button).Tag |
51 | Call tagTest.TestDisp() |
これは初心者の方向けですが、上記のソースの中での注意点としては、
ボタンクリックのイベントを1カ所に集めて処理する様に、
Handles の所で複数のボタンクリック宣言を行っています。
あともう一つ注意点なのですが、Tag プロパティの初期値は null であることです。
何も設定しない状態で Tag を参照しても結果は何も入っていない状態ですので、
プログラム的には IsNothing か何かで判定して処理を分ける必要があります。