tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトル全コントロール共通でイベント発生
記事No4620
投稿日: 2006/12/04(Mon) 10:59
投稿者フウセンウナギ
XP SP2 VB2005 です。

フォームにテキストや日付コントロール、ボタンなどを用意します。
これらにはすべてTagプロパティにメッセージをセットしてあり、
EnterイベントでそのTag内容を特定のラベルに表示し、Leaveイベントでラベル内容
を消すようにしようと思います。

いろいろ調べてみて、コントロールがテキストだけならばEnterイベント1つで記述することが
できたのですが、複数の種類のコントロールのイベントを1つにまとめる方法が分かりません。
以下はテキストをコントロール配列のようにするための記述です。


Private txt() As System.Windows.Forms.TextBox

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load

            '★コントロール配列の作成
            Me.txt = New System.Windows.Forms.TextBox(2) {}

            '★フォームのインスタンスを代入
            Me.txt(0) = Me.txt0
            Me.txt(1) = Me.txt1
            Me.txt(2) = Me.txt2

            '★イベントハンドラに関連付け
            For intI = 0 To 2
                AddHandler Me.txt(intI).KeyPress, _
                    AddressOf Me.txt_KeyPress
            Next intI

End Sub

Private Sub txt_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
    Dim index As Integer

        '★インデックスを取得
        index = CInt(Replace(CType(sender, System.Windows.Forms.TextBox).Name, "txt", ""))

        Select Case Index
            Case 0
            Case 1
        End Select
End Sub

[ツリー表示へ]
タイトルRe: 全コントロール共通でイベント発生
記事No4621
投稿日: 2006/12/04(Mon) 11:42
投稿者ダンボ
見当違いのことを回答していたので削除します。

[ツリー表示へ]
タイトルRe: 全コントロール共通でイベント発生
記事No4626
投稿日: 2006/12/04(Mon) 16:20
投稿者るしぇ
引数の型と数が同じなら、同じイベントに結び付けられると思います。

> CType(sender, System.Windows.Forms.TextBox)
既存のコントロールを全て格納したいなら継承元である Control クラス
などを利用するとか。
共通のインターフェース(Interface)を自作して、共通の処理ができる
コントロールを自作するとか。

[ツリー表示へ]