如果文本框为空,如何填充文本框?我正在使用VB.NET。
答案 0 :(得分:17)
看起来您正在描述提示横幅,这是一个显示在空文本框中的提示文字。从Windows XP开始,操作系统本身支持此功能。以这种方式实现的效果比在TextChanged
事件中自己设置默认文本要优雅得多。它看起来像这样:
通过发送文本框控件EM_SETCUEBANNER
message,可以在Windows API级别完成此设置。要从.NET项目中使用它,您必须使用P / Invoke。
幸运的是,大部分工作已经为您完成。 This sample project是一种快速,轻松的方式,可以为现有项目添加cue banner支持。 Here's another sample,对该过程有更完整的解释。
如果您不希望应用程序依赖外部DLL,则可以将必要的代码直接添加到项目中。最简单的方法是对现有的TextBox
控件进行子类化,并添加代码以支持那里的cue横幅。有关您需要的代码,请参阅this answer。如果您将其转换为VB.NET时遇到问题,请尝试this tool。
答案 1 :(得分:3)
如果事件被触发,如果文本框为空,您可能希望处理TextChanged
事件并设置一些默认文本。
我没有VB.NET示例,但下面的C#应该太难理解了:
public Form1()
{
this.InitializeComponent();
textBox1.Tag = "Default text";
textBox1.Text = (string)textBox1.Tag;
textBox1.TextChanged += new EventHandler(OnTextChanged);
}
void OnTextChanged(object sender, EventArgs e)
{
var textbox = (TextBox)sender;
if (string.IsNullOrEmpty(textbox.Text))
{
textbox.Text = (string)textbox.Tag;
}
}
事件处理程序可以重复用于几个文本框。
编辑:这在VB.NET中几乎相同
Sub New()
' This call is required by the designer.
InitializeComponent()
TextBox1.Tag = "Default text" ' This can be set with the designer
TextBox1.Text = CStr(TextBox1.Tag)
End Sub
Private Sub OnTextBoxTextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
Dim textbox As TextBox = DirectCast(sender, TextBox)
If String.IsNullOrEmpty(textbox.Text) Then
textbox.Text = CStr(textbox.Tag)
textbox.SelectAll()
End If
End Sub
当然,您也可以使用本机Windows功能实现类似的行为,但即使您不想使用Win32,只需几行托管代码即可为您提供所需的全部功能。
答案 2 :(得分:2)
文本框中的默认文本处理
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
TextBox1.Text = "Default Text" ' initialize the text box
End Sub
当光标位于文本框中时清除文本
Private Sub TextBox1_GotFocus(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1_GotFocus
TextBox1.Text = "" ' clear the text box for typing
End Sub
如果数据更改后文本框保持为空,则默认文本会再次出现
Private Sub TextBox1_LostFocus(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1_LostFocus
TextBox1.Text = "" ' clear the text box for typing
End Sub
答案 3 :(得分:0)
你在找这样的东西吗?
If Textbox.Text = string.Empty Then
TextBox.Text = "Default Text"
End If
答案 4 :(得分:0)
我会创建一个继承TextBox的类,并用它做两件事: