忍者ブログ

VB.NET-TIPS などプログラミングについて

VB.NETのTIPS(小技集)を中心に、Javascript、PHP その他のプログラミングについて少し役に立つ情報を発信します。いわゆる個人的な忘備録ですが、みなさんのお役に立てれば幸いです。

初回のフォームActivatedイベント発生させるフォーム継承について

以下のページではフォームクラスにフラグを宣言し、フォームActivatedイベントの処理で最初の呼び出しかどうかを判定していました。

このフラグ処理ですが、全てのフォームに宣言するのも手間が掛かりますので、いっそ継承クラスのフォームにしてはと思い テスト的なフォームのクラスを作成してみました。
先ずはフォーム名をfrmOneActiveBaseとして、 ソース内容は上記の「最初のフォームActivatedイベントでの処理」の内容をそのままコピーしてきます。 但し、テキストボックスの処理は削除してあります。

イベントを1個作成し名前をOneActivatedとして宣言します。 このイベントを、初回のフォームActivatedイベントで発生させる様にします。 ソースは以下の様になります。

ベースのフォーム処理

Public Class frmOneActiveBase

    'イベント宣言
    Public Event OneActivated(ByVal sender As Object, ByVal e As EventArgs)

    'アクティブフラグ
    Private mblnActivated As Boolean = False

    ''' 
    ''' フォームアクティブイベント
    ''' 
    Private Sub frmOneActiveBase_Activated(sender As Object, e As EventArgs) Handles Me.Activated
        'アクティブフラグOFF??
        If Me.mblnActivated = False Then
            'フラグON
            Me.mblnActivated = True
            'イベント発生
            RaiseEvent OneActivated(Me, New EventArgs)
        End If
    End Sub

    ''' 
    ''' フォームロードイベント
    ''' 
    Private Sub frmOneActiveBase_Load(sender As Object, e As EventArgs) Handles Me.Load
        Me.mblnActivated = False
    End Sub

End Class

ここで一旦ビルド作業を行います。 その後、このfrmOneActiveBaseフォームを継承するフォームを作成してみます。

メインメニューの「プロジェクト」⇒「新しい項目の追加」を選択し、以下の表示になったら 左の「Windows Fomrs」を選択後「継承されたフォーム」を選択し、フォーム名をfrmOneActiveとします。


その後「継承ピッカー」の選択になりますので、先ほどの「frmOneActiveBase」を選択しますと以下の様な表示なります。


frmOneActiveのフォームが以下の様に表示されます。


frmOneActiveのフォームが表示されたら、1個のテキストボックスを貼付け、 複数行許可を画面右のプロパティウインドウから行います。


ここでfrmOneActiveフォームのソースを表示させ、 さらに、「frmOneActive(アクティブ)」から「OneActivated」イベント探して、指定します。

そこで、以下の様にソースを記述します。

Public Class frmOneActive

    Private Sub frmOneActive_OneActivated(sender As Object, e As EventArgs) Handles Me.OneActivated
        'テキストボックに時刻表示
        Me.TextBox1.Text &= "Activated..." & Now.ToString("hh:mm:ss") & vbCrLf
    End Sub

End Class


これでフォームのActivatedイベントでフラグ処理を行わずとも、このOneActivatedイベントの中で処理が可能となります。

関連する記事

フォームの位置設定を行う処理     :[Screen.PrimaryScreen.WorkingArea]
フォームクラスにプロパティ宣言し外からアクセスする方法
親フォームのコントロールを子フォームからアクセスする方法
フォームが閉じるのをキャンセルする方法:[FormClosingEventArgs,Cancel]
フォームの表示をモジュールのMain関数から行う(エントリポイントの変更)
フォームがKeyDownなどのキーイベントを受取り、ファンクションキー処理をする
最初のフォームActivatedイベントでの処理(1回のみしか処理しない様にする)
初回のフォームActivatedイベント発生させるフォーム継承について











PR

コメント

コメントを書く