1

このコードは、フォームの各テキスト ボックスのオンザフライ ラベル クリエーターです。フォームに必要なすべてのテキスト ボックスが、ダブル/シングル クリックを使用してイベント ハンドラーにリンクされていることを確認してください。

パブリック クラス Form1

Private Sub MyEventRoutine( _
   ByVal sender As System.Object, _
   ByVal e As System.EventArgs) Handles TextBox2.DoubleClick, TextBox1.DoubleClick

    'get textbox
    Dim myTextBox As TextBox = sender

    'decl label associated with textbox
    Dim thelabeltochange As Control

    'decl label-name finder code
    Dim lblname As String
    lblname = myTextBox.Name & "label"

    If Me.Controls.Find(lblname, True).Length = 0 Then

        Dim lab As New Label

        lab.Name = myTextBox.Name & "label"
        lab.Size = New Size(40, 20)
        lab.Text = "Correct"
        lab.Location = New Point(myTextBox.Left + 89, myTextBox.Top)

        Me.Controls.Add(lab) 'this should newly created label to your form

        lab.BringToFront()

        Debug.Write("LABEL name >" & lblname & "< generated on first double click" & vbCrLf)

    Else

        For Each tmp As Control In Me.Controls

            If tmp.Name = myTextBox.Name & "label" Then

                Debug.Write("label exists and has name" & vbCrLf)

                thelabeltochange = tmp

                If thelabeltochange.Text = "Correct" Then

                    Debug.Write("label set as correct and is now wrong" & vbCrLf)
                    thelabeltochange.Text = "Wrong"
                    thelabeltochange.BringToFront()

                ElseIf thelabeltochange.Text = "Wrong" Then

                    Debug.Write("label set as wrong and is now To do" & vbCrLf)
                    thelabeltochange.Text = "To do"
                    thelabeltochange.BringToFront()

                ElseIf thelabeltochange.Text = "To do" Then

                    Debug.Write("label set as To do and is now deleted" & vbCrLf)
                    Me.Controls.Remove(thelabeltochange)

                End If

            End If

        Next

    End If



End Sub

クラス終了

4

0 に答える 0