Можно ли изменить цвет текста заполнителя в TextBox в Winforms? - PullRequest
1 голос
/ 30 мая 2020

Я хочу изменить цвет текста заполнителя в текстовом поле, но, похоже, не могу найти способ сделать это. Можно ли его изменить?

1 Ответ

2 голосов
/ 30 мая 2020

Я не думаю, что в WinForms есть текстовое свойство Placeholder (кто-то поправит меня, если я это пропустил)

Я могу сделать это, добавив 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
  }
}

Кроме того, если вы используете sh, чтобы использовать это для нескольких текстовых полей, создайте свой собственный элемент управления текстовым полем, наследующий от класса 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: Здесь набран весь код, поэтому возможны опечатки и некоторые ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...