我在注册表单中有6个Textbox
,其中包含一些预设文字。
当我点击Textbox
Name
时,预设文字Enter your full name
应该会消失...如果我点击Textbox
Email
而不写任何内容Name
文本框,然后再显示Enter your full name
。我的所有Textbox
都应该发生此事件,但每个Textbox
中的文本应该是不同的文本...所有文件都不是Enter your full name
。有人可以帮我这个吗?
我现在使用的代码可以在我使用GotFocus事件点击它们时清除Textbox
。
private void textBox1_GotFocus(Object sender, EventArgs e)
{
textBox1.Clear();
}
在文本框中,我有预设文本....我希望每当我点击Textbox
之外时,每个文本框的确切预设文本都会返回。
我听说过一个关于“占位符”的事情了吗?
以下是使用额外构造函数的外观。我无法弄清楚我做错了什么?
public partial class CustomTextbox : TextBox
{
private const string _text = @"Enter your full name";
private bool _isEmpty = true;
public CustomTextbox()
{
base.ForeColor = SystemColors.GrayText;
Text = _text;
Leave += LeaveTextBox;
Enter += EnterTextBox;
TextChanged += TextChangedTextBox;
}
public CustomTextbox(string tempText)
{
base.ForeColor = SystemColors.GrayText;
Text = tempText;
Leave += LeaveTextBox;
Enter += EnterTextBox;
TextChanged += TextChangedTextBox;
}
答案 0 :(得分:2)
尝试创建继承自Textbox
的自定义类。为此,请创建一个新的Usercontrol
。删除基类名称并在其中放置Textbox
。如果给出编译错误,删除设计器中的任何内容建立你的项目。您应该在工具箱中看到一个新控件。使用它,你很高兴。以下是Usercontol.cs
public partial class CustomTextbox : TextBox
{
private const string _text = @"Enter your full name";
private bool _isEmpty = true;
public CustomTextbox()
{
InitializeComponent();
base.ForeColor = SystemColors.GrayText;
Text = _text;
Leave += LeaveTextBox;
Enter += EnterTextBox;
TextChanged += TextChangedTextBox;
}
private void TextChangedTextBox(object sender, EventArgs e)
{
_isEmpty = string.IsNullOrEmpty(Text);
}
public override sealed string Text
{
set
{
base.Text = value;
}
}
private void LeaveTextBox(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(Text))
{
Text = _text;
_isEmpty = true;
base.ForeColor = SystemColors.GrayText;
}
else
{
_isEmpty = false;
}
}
private void EnterTextBox(object sender, EventArgs e)
{
if (_isEmpty)
Text = string.Empty;
base.ForeColor = SystemColors.ControlText;
}
}
如果您需要任何进一步的信息,请与我们联系。作为not,您还可以将_text
作为公共属性并使用它来设置所需的文本属性。
希望它有所帮助。
答案 1 :(得分:0)
我解决了我的问题! 感谢@rapsalands提供的代码。 我现在已根据自己的需要对其进行了修改。
public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
}
}
public partial class CustomTextbox : TextBox
{
private string defaultText;
public string DefaultText
{
get { return defaultText; }
set { defaultText = value; }
}
private bool _isEmpty = true;
public CustomTextbox(string myText)
{
base.ForeColor = SystemColors.GrayText;
this.Text = myText;
this.DefaultText = myText;
Leave += LeaveTextBox;
Enter += EnterTextBox;
TextChanged += TextChangedTextBox;
}
private void TextChangedTextBox(object sender, EventArgs e)
{
_isEmpty = string.IsNullOrEmpty(Text);
}
public override sealed string Text
{
set
{
base.Text = value;
}
}
private void LeaveTextBox(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(Text))
{
Text = defaultText;
_isEmpty = true;
base.ForeColor = SystemColors.GrayText;
}
else
{
_isEmpty = false;
}
}
private void EnterTextBox(object sender, EventArgs e)
{
if (_isEmpty)
Text = string.Empty;
base.ForeColor = SystemColors.ControlText;
}
}
}