2012-10-23 2 views
0

사용자에게 시각적 신호를 제공하기 위해 현재 텍스트 상자를 강조 표시하는 코드가 있습니다. 내 질문은 텍스트 상자가있는 10 개의 양식이 있고이 모두를 동일한 코드로 제공하려는 경우입니다. 그것을 복제해야합니까, 아니면 글로벌 방법을 사용할 수 있습니까? 그렇다면 예제가 도움이 될 것입니다. 감사.여러 양식에서 핸들러 사용?

코드는 다음과 같습니다.

Private Sub FocusChanged(ByVal sender As Object, ByVal e As EventArgs) 
    Dim txt As TextBox = sender 
    If txt.Focused Then 
     txt.Tag = txt.BackColor 
     txt.BackColor = Color.AliceBlue 
    Else 
     txt.BackColor = txt.Tag 
    End If 
End Sub 
Private Sub CreateAccount_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
    For Each ctrl As TextBox In Me.Controls.OfType(Of TextBox)() 
     AddHandler ctrl.GotFocus, AddressOf FocusChanged 
     AddHandler ctrl.LostFocus, AddressOf FocusChanged 
     ctrl.Tag = ctrl.BackColor 
    Next 
End Sub 

답변

2

모든 TextBox 컨트롤이 동작을 추가 할 경우, 텍스트 상자 클래스에서 자신의 클래스를 파생 더 낫다, 그에 따라 속성을 설정하기 위해 OnGotFocusOnLostFocus 방법을 우선합니다. 프로젝트에 클래스를 추가 한 후, 솔루션을 다시 언급하는 것을 잊었다, 그것은 오류없이 컴파일하면, 다음 새 텍스트 상자 클래스 쇼는 VS에 표시 :

Public Class MyTextBox 
    Inherits TextBox 

    Protected Overrides Sub OnGotFocus(e As System.EventArgs) 
     MyBase.OnGotFocus(e) 
     Me.Tag = Me.BackColor 
     Me.BackColor = Color.Aqua 
    End Sub 

    Protected Overrides Sub OnLostFocus(e As System.EventArgs) 
     MyBase.OnLostFocus(e) 
     Me.BackColor = Me.Tag 
    End Sub 
End Class 

편집 :

는 방법은 다음과 같습니다 도구 상자. 그런 다음 모든 컨트롤과 마찬가지로 & 드롭을 폼으로 드래그 할 수 있습니다.

환호

+0

Ty sir! 내가 뭘 찾고 있었는지. – Meowbits

관련 문제