显示C#winforms编辑控件的提示
时间:2020-03-05 18:48:31 来源:igfitidea点击:
我正在开发Cwinforms应用程序(VS.NET 2008,.NET 3.5 sp 1)。我在表单上有一个搜索字段,而不是在搜索字段旁边有一个标签,我想在搜索字段本身的背景中显示一些灰色文本(例如"搜索字词")。当用户开始在搜索字段中输入文本时,该文本应消失。我怎样才能做到这一点?
解决方案
回答
我们将需要使用一些P / Inovke互操作代码来执行此操作。查找Win32 API的SendMessage函数和EM_SETCUEBANNER消息。
回答
文本框控件-AutoCompleteMode和AutoCompleteSource中具有内置功能。在我们进入自定义或者第三方控制之前,可能值得一试。
回答
试试这个链接的代码。它扩展了winforms功能,因为不可能立即实现。源代码也可用。请记住,它仅适用于Win XP或者更高版本。
http://www.aaronlerch.com/blog/2007/12/01/watermarked-edit-controls/
回答
我认为通常这样做的方法是将文本的颜色设置为灰色,并用提示文本预先填充它。
然后,为文本字段的焦点事件编写处理程序,并在获得焦点和丢失焦点时修改字段的内容和颜色。这是一些伪代码(对不起,它完全不是Ccode。我现在大脑上有Actionscript):
TextInput myInput; boolean showingHint = true; myInput.text = "Search Terms"; myInput.color = 0xcccccc; myInput.onFocusGained = function() { if(showingHint) { myInput.text = ""; myInput.color = 0x000000; showingHint = false; } } myInput.onFocusLost = function() { if(!showingHint && myInput.text.length == 0) { myInput.text = "Search Terms"; myInput.color = 0xcccccc; showingHint = true; } }
请记住,如果用户没有手动更改文本,则只想更改丢失焦点的文本。使用单独的布尔值来跟踪是否显示提示,以便我们可以区分手动输入"提示"文本作为实际内容的用户。同样,如果只显示提示,则只想清除输入框的内容,这样就不会意外删除用户输入。