如何制作它以便在单击文本框时,文本框中最初的文本(“在此处输入文本”)将被清除,并且仅在第一次单击时被清除?
编辑:对不起,我正在使用C#。
答案 0 :(得分:5)
实现这一目标的最常见方法是处理文本框的焦点事件(取决于您使用的框架会有所不同),然后测试预期的“提示字符串”。如果它在那里,那么你清除文本框。如果没有,你就不管它了。
如果您只想显示“提示”一次,那么您可以在处理完事件后取消订阅。
请注意,如果您向我们提供有关您正在使用的技术(WinForms / WPF / ASP.NET / MVC / jQuery / HTML5等)的更多信息,则可能会采用更具体且可能更强大的方法。
答案 1 :(得分:1)
假设它的WinForms应用程序,只需绑定GotFocus
或Click
事件的处理程序。
答案 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)
您可以执行以下操作:
答案 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#?
希望这很有用。
祝你好运。