2013-04-21 30 views
2

我想知道如何创建一个类来更改Form中的每个文本框BackColor。 更具体:Vb.Net - 动态改变文本框BackColor的类

  1. 当文本框为空,则文本框背景色等于白色。
  2. 当文本框获取焦点时,文本框BackColor发生变化。
  3. 当文本框有任何文本时,文本框BackColor发生更改。
  4. 当文本框失去焦点时,文本框BackColor发生变化。

目前,我正在这样做。

Private Sub tb_Login_Enter(sender As Object, e As EventArgs) Handles tb_Login.Enter 
    tb_Login.BackColor = Color.LightCyan 
End Sub 

Private Sub tb_Login_Leave(sender As Object, e As EventArgs) Handles tb_Login.Leave 
    If tb_Login.Text <> "" Then 
     tb_Login.BackColor = Color.LightGreen 
    Else 
     tb_Login.BackColor = Color.White 
    End If 

但是,我在我的许多TextBox中,所以,我该如何为它创建一个类?

感谢

回答

0

所有你需要做的就是继承自TextBox控件。

Public Class TextBoxEx 
    Inherits TextBox 

    Private Sub TextBoxEx_Enter(sender As Object, e As EventArgs) Handles Me.Enter 
     Me.BackColor = Color.LightCyan 
    End Sub 

    Private Sub TextBoxEx_Leave(sender As Object, e As EventArgs) Handles Me.Leave 
     If Me.Text <> "" Then 
      Me.BackColor = Color.LightGreen 
     Else 
      Me.BackColor = Color.White 
     End If 
    End Sub 
End Class 

构建您的项目,然后用新的TextBoxEx控件替换您的TextBox控件。

+0

谢谢你,它工作正常!我也做了一些改变,但我问自己,我怎么能在MaskedTextBox中做到这一点?由于此控制器没有输入/离开事件。我尝试了有或失去焦点,但它不工作。 – APS 2013-04-24 03:05:22

0

您可以创建具有文本框控件的集合类。您可以通过表单或用户控件的Controls属性获取此集合,并验证控件的类型。 在内部,类必须订阅文本框控件集合中列出的事件。 最后,在处理事件的方法上,您必须编写相应地更改颜色的逻辑。 请记住,句柄事件方法具有触发第一个参数上的事件的控件。

如果您有更多疑问,我可以进入更多细节。