Очистить один текстовый блок при нажатии в C #? - PullRequest
2 голосов
/ 07 августа 2011

Как мне сделать так, чтобы при щелчке по текстовому полю текст, который был первоначально в текстовом поле («Введите текст здесь»), был очищен и только при первом щелчке по нему?

Редактировать: Извините, я использую C #.

Ответы [ 5 ]

5 голосов
/ 07 августа 2011

Самый распространенный способ добиться этого - обработать событие фокуса текстового поля (в зависимости от того, какая среда, которую вы используете, это будет варьироваться), а затем проверить на ожидаемую «строку подсказки».Если он там есть, вы очищаете текстовое поле.Если нет, оставьте его в покое.

Если вы хотите показать «подсказку» только один раз, вы можете отказаться от подписки на событие после того, как обработали его.

Обратите внимание, что если выдайте нам больше информации о том, какую технологию вы используете (WinForms / WPF / ASP.NET / MVC / jQuery / HTML5 / и т. д.), тогда возможен более конкретный и, возможно, более надежный подход.

1 голос
/ 07 августа 2011

Я бы не последовал предложению об изменении текста в событии GotFocus - это вызовет проблемы при связывании и не будет элегантным.

WinForms:

Существует специальная техника для установки этого видавсплывающей подсказки для любого стандартного текстового поля Windows.Объявите это:

private const uint ECM_FIRST = 0x1500;
private const uint EM_SETCUEBANNER = ECM_FIRST + 1;

[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, uint wParam, [MarshalAs(UnmanagedType.LPWStr)] string lParam);

и затем используйте:

private void SetWatermark(string watermarkText)
{
    SendMessage(this.Handle, EM_SETCUEBANNER, 0, watermarkText);
}    

HTML:

<input name="email" placeholder="Enter text here">
1 голос
/ 07 августа 2011

Предполагая его приложение WinForms, просто свяжите обработчик для события GotFocus или Click.

0 голосов
/ 08 августа 2011

То, что вы пытаетесь сделать, называется «Водяным знаком» - это текстовое поле. Есть несколько способов сделать это:

1) используйте событие MouseClick в текстовом поле, чтобы удалить текст по умолчанию.
2) использовать готовый доступный класс, чтобы реализовать его, как показано здесь: http://vidmar.net/weblog/archive/2008/11/05/watermarked-textbox-in-windows-forms-on-.net.aspx

Вы можете найти дополнительную информацию в похожих вопросах, задаваемых на Stackoverflow, вот несколько:
Водяной знак / текст подсказки / заполнитель TextBox в WPF
Водяной знак в System.Windows.Forms.TextBox
Как использовать водяной знак System.Windows.Forms.TextBox с помощью C #?
Надеюсь, это было полезно.
Удачи.

0 голосов
/ 07 августа 2011

Вы можете сделать следующее:

  • обработать событие фокуса (Фокус) и очистить текст, если он установлен как "совет"
  • обрабатывать событие потери фокуса (LostFocus) и, если текстовое поле пустое добавить подсказку обратно в текстовое поле
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...