在C#中单击时清除单个文本框?

时间:2011-08-07 18:07:47

标签: c# .net winforms textbox

如何制作它以便在单击文本框时,文本框中最初的文本(“在此处输入文本”)将被清除,并且仅在第一次单击时被清除?

编辑:对不起,我正在使用C#。

5 个答案:

答案 0 :(得分:5)

实现这一目标的最常见方法是处理文本框的焦点事件(取决于您使用的框架会有所不同),然后测试预期的“提示字符串”。如果它在那里,那么你清除文本框。如果没有,你就不管它了。

如果您只想显示“提示”一次,那么您可以在处理完事件后取消订阅。

请注意,如果您向我们提供有关您正在使用的技术(WinForms / WPF / ASP.NET / MVC / jQuery / HTML5等)的更多信息,则可能会采用更具体且可能更强大的方法。

答案 1 :(得分:1)

假设它的WinForms应用程序,只需绑定GotFocusClick事件的处理程序。

答案 2 :(得分:1)

我不会遵循在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">

答案 3 :(得分:0)

您可以执行以下操作:

  • 处理焦点事件(焦点)并清除文本(如果是一组) 作为“小费”
  • 处理焦点丢失事件(LostFocus)以及文本框是否为空 将“提示”添加回文本框

答案 4 :(得分:0)

您尝试做的事情称为“水印”文本框。有很多方法可以做到:

1)使用文本框上的MouseClick事件删除默认文本 2)使用现成的类来实现它,如下所示: http://vidmar.net/weblog/archive/2008/11/05/watermarked-textbox-in-windows-forms-on-.net.aspx

你可以在Stackoverflow上找到类似问题的更多信息,这里有几个:
Watermark / hint text / placeholder TextBox in WPF
Watermark in System.Windows.Forms.TextBox
How to use watermark System.Windows.Forms.TextBox using C#?
希望这很有用。
祝你好运。