我想更改文本框中占位符文本的颜色,但似乎找不到解决方法。是否可以更改?
我不认为WinForms中有一个占位符文本属性(如果我错过了,请纠正我)
我这样做的方法是添加2个事件处理程序,一个用于Enter
事件,另一个用于Leave
事件
private void textbox1_Enter(object sender, EventArgs e)
{
if(textbox1.Text == "my_placeholder_text")
{
textbox1.Text = "";
textbox1.ForeColor = Color.Black;
}
}
private void textbox1_Leave(object sender, EventArgs e)
{
if(textbox1.Text == "")
{
textbox1.Text = "my_placeholder_text";
textbox1.ForeColor = Color.LightBlue; //or whatever color your want to set
}
}
此外,如果您希望将其用于多个文本框,请创建一个继承自System.Windows.Forms.UI.TextBox
类的文本框控件,并向其中添加两个属性PlaceholderText
和PlaceholderColor
class myTextBox: System.Windows.Forms.UI.TextBox
{
public string PlaceholderText {get; set;} = "";
public Color PlaceholderColor {get; set;} = Color.Gray;
protected void override OnEnter(EventArgs e)
{
if(this.Text == PlaceholderText)
{
this.Text = "";
this.Color = this.ForeColor;
}
}
protected void override OnLeave(EventArgs e)
{
if(this.Text == "")
{
this.Text = PlaceholderText;
this.Color = this.PlaceholderColor;
}
}
}
PS:所有代码均在此处键入,因此可能会出现输入错误和某些错误。