Я не думаю, что в 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: Здесь набран весь код, поэтому возможны опечатки и некоторые ошибки.