Member 10549697 Ответов: 2

Как добавить водяной знак в текстовое поле в форме C# windows?


private void Login_Load(object sender, EventArgs e)
{
	textBox1.Text = "Email";
	textBox1.ForeColor = Color.Gray;
	textBox2.Text = "Password";
	textBox2.ForeColor = Color.Gray;
	panel8.Visible = false;
	panel7.Visible = false;


	// textBox1.ForeColor = Color.Gray;

	//textBox2.ForeColor = Color.Gray;

}
private void textBox1_Click(object sender, EventArgs e)
{
	panel8.Visible = true;
	panel7.Visible = false;
	textBox1.Text = "";
}

private void textBox2_Click(object sender, EventArgs e)
{
	panel8.Visible=false;
	panel7.Visible = true;
	textBox2.Text = "";
}


Что я уже пробовал:

я не знаю, как добавить водяной знак, поэтому я сделал это с помощью событий щелчка, но это не так satisfiable...is есть ли другой способ сделать это?

Patrice T

Что вы хотите сделать с водяным знаком в текстовом поле ?

Patrice T

Я обнаружил, что не знаю этого имени в контексте. :)

Member 10549697

это как обычное текстовое поле, имеющее tex как "введите здесь..."

2 Ответов

Рейтинг:
20

Member 10549697

Спасибо, сэр! третье звено работал...это было простое объяснение..спасибо

Karthik_Mahalingam

добро пожаловать :)

Рейтинг:
2

Member 13942300

Создайте 2 одинаковых текстовых поля в форме windows. Назвать их "RealTextBox" (вкладка индекс 1) и "WatermarkTextBox" (вкладка указатель на 0, установить цвет передней серый). Расположите WatermarkTextBox точно поверх RealTextBox, чтобы последний не был виден. Создайте "событие TextChanged" для каждого текстового поля (см. код ниже) и строковое поле "watermark" для хранения текста водяного знака. Создайте "событие щелчка" для поля WatermarkTextBox. Когда пользователь нажимает на текстовое поле, это событие гарантирует, что текст водяного знака и каретка остаются неизменными.

Когда форма загружена, в поле WatermarkTextBox отображается текст водяного знака, а перед ним мигает каретка. Когда набирается первый символ, он копируется в RealTextBox, WatermarkTextBox устанавливается в положение "невидимый", а каретка помещается после символа в RealTextBox, где можно продолжить ввод текста.

Если текст в RealTextBox удаляется, форма возвращается в исходное состояние.

Мое решение в коде:

using System;
using System.Windows.Forms;

namespace WatermarkTextBox
{
    public partial class TestForm : Form
    {
        // The placeholder text:
        string watermark = "Type here...";

        public TestForm()
        {
            InitializeComponent();            
            WatermarkTextBox.Text = watermark;
            WatermarkTextBox.Select(0, 0);
        }

        // The 2 TextChanged events:
        private void WatermarkTextBox_TextChanged(object sender, EventArgs e)
        {
            RealTextBox.Text = WatermarkTextBox.Text.Substring(0, 1);
            WatermarkTextBox.Visible = false;
            RealTextBox.Select(1, 0);
        }

        private void RealTextBox_TextChanged(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(RealTextBox.Text))
            {
                WatermarkTextBox.Text = watermark;
                WatermarkTextBox.Visible = true;
                WatermarkTextBox.Focus();
                WatermarkTextBox.Select(0, 0);
            }
        }

        private void WatermarkTextBox_Click(object sender, EventArgs e)
        {
            WatermarkTextBox.Text = watermark;
            WatermarkTextBox.Select(0, 0);
        }
    }
}