2012-10-23 48 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方法來設置相應的屬性。

方法如下:

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 

編輯:忘了提,並稱類項目後,重新生成解決方案,如果編譯沒有錯誤,那麼你的新的TextBox類節目在VS露面工具箱。然後,您可以簡單地將&拖放到您的表單上,就像任何控件一樣。

Cheers

+0

Ty sir!正是我在找的東西。 – Meowbits

相關問題