Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C#中单击时清除单个文本框?_C#_.net_Winforms_Textbox - Fatal编程技术网

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

在C#中单击时清除单个文本框?,c#,.net,winforms,textbox,C#,.net,Winforms,Textbox,如何使文本框被单击时,文本框中原来的文本(“此处输入文本”)被清除,并且仅在第一次单击时才被清除 编辑:对不起,我正在使用C#。实现这一点的最常用方法是处理文本框的焦点事件(取决于您使用的框架不同),然后测试预期的“提示字符串”。如果它在那里,则清除文本框。如果没有,你就别管它 如果您只想显示“提示”一次,那么您可以在处理完该活动后取消订阅 请注意,如果您向我们提供有关您正在使用的技术的更多信息(WinForms/WPF/ASP.NET/MVC/jQuery/HTML5/等),则可能会有一种更具

如何使文本框被单击时,文本框中原来的文本(“此处输入文本”)被清除,并且仅在第一次单击时才被清除


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

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

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


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

假设其WinForms应用程序,只需为
GotFocus
单击事件绑定处理程序。

您可以执行以下操作:

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

我不同意在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:


您试图做的是将文本框称为“水印”。有许多方法可以实现这一点:

1) 使用文本框上的鼠标单击事件删除默认文本。
2) 使用一个现成的类来实现它,如下所示:

您可以在Stackoverflow的类似问题中找到更多信息,这里有一些:



希望这有帮助。

祝你好运。

为此使用GotFocus事件并不是实现这一目标的最佳方式。考虑一下你可能遇到的绑定问题。@米迦勒公平点,虽然考虑到OP并没有具体说明他们使用的是什么技术,但我试图给出一个通用的方法来解决这个问题。内森,我要收回你的编辑。请随意将其作为单独的答案发布。@dlev谢谢!如果可以的话,我会投票的。我编辑了我的文章,以包括我正在使用的技术,正如你所建议的,因此也非常感谢。@dlev你能提供一个示例代码吗?我很难弄清楚如何正确使用它。
<input name="email" placeholder="Enter text here">