Winforms中的文本框中的占位符文本颜色可以更改吗?

问题描述 投票:1回答:1

我想更改文本框中占位符文本的颜色,但似乎找不到解决方法。是否可以更改?

c# winforms
1个回答
2
投票

我不认为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类的文本框控件,并向其中添加两个属性PlaceholderTextPlaceholderColor

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:所有代码均在此处键入,因此可能会出现输入错误和某些错误。

© www.soinside.com 2019 - 2024. All rights reserved.