【发布时间】:2011-10-21 22:15:42
【问题描述】:
如何做到这一点,以便在单击文本框时清除文本框中最初的文本(“在此处输入文本”),并且仅在第一次单击时才被清除?
编辑:抱歉,我使用的是 C#。
【问题讨论】:
如何做到这一点,以便在单击文本框时清除文本框中最初的文本(“在此处输入文本”),并且仅在第一次单击时才被清除?
编辑:抱歉,我使用的是 C#。
【问题讨论】:
您正在尝试做的是称为“水印”文本框。有很多方法可以做到这一点:
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#?
希望这会有所帮助。
祝你好运。
【讨论】:
我不会遵循在 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">
【讨论】:
实现这一点的最常见方法是处理文本框的焦点事件(取决于您使用的框架会有所不同),然后测试预期的“提示字符串”。如果它在那里,那么你清除文本框。如果没有,你别管它。
如果您只想显示一次“提示”,那么您可以在处理完事件后取消订阅。
请注意,如果您向我们提供有关您正在使用的技术(WinForms/WPF/ASP.NET/MVC/jQuery/HTML5/等)的更多信息,那么可能会采用更具体且可能更强大的方法。
【讨论】:
您可以执行以下操作:
【讨论】:
假设它的 WinForms 应用程序,只需为 GotFocus 或 Click 事件绑定一个处理程序。
【讨论】: