Как в C# запросить ввод в форму, если она пуста?
Сделать это можно разными способами.
Простейший. Это по сути то, что уже предложил Egor. Помещаем Label
рядом с нашим текстбоксом. Подписываем текстбокс на событие TextChanged
, в нём пишем следующий код:
private void TextBox1_TextChanged(object sender, EventArgs e)
{
if (string.IsNullOrWhiteSpace(textBox1.Text))
label.Text = "Введите значение";
else
label.Text = "";
}
Без применения дополнительного ярлыка. Подписываем наш TextBox
на два события: Enter
и Leave
.
private void textBox2_Enter(object sender, EventArgs e)
{
if (textBox2.Text == "Введите значение")
{
textBox2.Text = "";
textBox2.ForeColor = SystemColors.WindowText;
}
}
private void textBox2_Leave(object sender, EventArgs e)
{
if (textBox2.Text.Trim() == "")
{
textBox2.Text = "Введите значение";
textBox2.ForeColor = SystemColors.GrayText;
}
}
Создаём класс-наследник, в котором посылаем специальное сообщение с помощью WinAPI функции SendMessage. В результате, когда TextBox
пустой и не в фокусе, в нём будет выводиться watermark.
class WatermarkedTextBox : TextBox
{
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
private static extern IntPtr SendMessage(IntPtr hWnd, uint msg, IntPtr wp, string lp);
protected override void OnHandleCreated(EventArgs e)
{
const uint msg = 0x1501;
base.OnHandleCreated(e);
if (IsHandleCreated)
{
SendMessage(Handle, msg, IntPtr.Zero, "Введите значение");
}
}
}
Ещё один способ - применение класса ErrorProvider.
Добавьте на форму этот компонент. Задайте ему желаемые значения свойств (BlinkStyle
). Подпишите TextBox
на событие Validating
. В нём пишете код:
private void textBox3_Validating(object sender, CancelEventArgs e)
{
if (textBox3.Text.Trim() == "")
errorProvider1.SetError(textBox3, "Введите значение");
else
errorProvider1.SetError(textBox3, "");
}
В итоге, когда данный текстбокс теряет фокус, будет происходить валидация. Если значение не введено, рядом с ним появится красный значок провайдера ошибки. При наведении на него мышки появится ToolTip
с текстом ошибки.
В принципе, можно совместить ErrorProvider
с одним из других способов.
if(TextBox.Text == "")
{
Label1.Text = "Поле TextBox должно быть заполнено";
return;
}
Необходимо добавить в форме лейбл, который будет пустой (без текста)
Вообще, подробнее описываете, что вам нужно. Куда вы хотите вывести сообщение?
Виртуальный выделенный сервер (VDS) становится отличным выбором
Имеется Canvas и на нём LabelНа канвасе и лейбле имеются события нажатия ЛКМ
Как лучше всего генерировать случайное 128-битное число в С#? Я пока придумал такой способ: с помощью RNGCryptoServiceProvider сгенерировать массив байтов...