测试环境:windows 7和Microsoft Visual Studio 2017
看到一些优秀软件里的TEXTBOX文本框都有水印文字提示应该输入什么样的信息,获取光标后提示文字消失,光标离开后水印文字出现,效果杠杠的,心里琢磨着能不能在自己在软件中也弄一个这样的效果?
首先想到的是利用TEXTBOX的焦点获得(Enter)和失去(Leave)事件来实现,新建一个窗体应用程序并拉入一个文本框,然后在窗体代码框录入如下代码:
Imports System.ComponentModel
Imports System.Drawing
Imports System.Windows.Forms
Public Class Form1
Private _textboxHasText As Boolean = False
Private Sub TextBox1_Enter(sender As Object, e As EventArgs) Handles TextBox1.Enter
If _textboxHasText = False Then TextBox1.Text = ""
TextBox1.ForeColor = Color.Black
End Sub
Private Sub TextBox1_Leave(sender As Object, e As EventArgs) Handles TextBox1.Leave
If TextBox1.Text = "" Then
TextBox1.Text = "水印文字"
TextBox1.ForeColor = Color.LightGray
_textboxHasText = False
Else
_textboxHasText = True
End If
End Sub
End Class
这种实现方式扩展性差,所以想到之前有做过自定义控件来实现DataGridView控件的全选全不选效果及分页效果,今天继续尝试着扩展TEXTBOX,把代码封装方便调用。首先想到的是做一个复合控件,这是最容易实现的,代码跟上述基本一致,因为我还没做过直接扩展控件的经验,对于控件继承、重载、重写等概念还处于一知半解状态,所以就想着借此机会做个尝试,顺便巩固学