.net - 如何使用默认文本填充空文本框?

标签 .net vb.net winforms textbox

如果文本框为空,如何填充文本?我正在使用 VB.NET。

最佳答案

看起来您正在描述一个提示横幅,它是显示在空文本框中的提示文本。从 Windows XP 开始,操作系统本身就支持此功能。通过这种方式实现的效果比在 TextChanged 事件中自己设置默认文本要优雅得多。它看起来像这样:

      sample of textbox with cue banner text

此设置是在 Windows API 级别通过向文本框控件发送 EM_SETCUEBANNER message 来完成的。 。要从 .NET 项目中使用它,您必须使用 P/Invoke。

幸运的是,大部分工作已经为您完成。 This sample project是一种向现有项目添加提示横幅支持的快速且轻松的方法。 Here's another sample ,并对过程进行更完整的解释。

如果您不希望您的应用程序依赖于外部 DLL,您可以将必要的代码直接添加到您的项目中。最简单的方法是对现有 TextBox 控件进行子类化,并添加代码以支持提示横幅。请参阅this answer获取您需要的代码。如果您在将其转换为 VB.NET 时遇到问题,请尝试 this tool .

关于.net - 如何使用默认文本填充空文本框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5178247/

相关文章:

vb.net - 隐式创建的Form是如何工作的?

c# - IndexOf 函数返回第一个索引还是随机?

c# - Managed Wifi Win32 API 是否有可靠的 .Net 包装器?

.net - 正则表达式反向引用对于输入 : 'UserProfile' and 'user-profile' 是相等的

asp.net - 如何在asp.net web服务方法中设置响应状态

.net - 我收到错误 "Application"在命名空间 'microsoft.office.interop.excel' 中不明确

c# - 当引用确实存在时,找不到类型或命名空间

c# - VB.NET 开发人员是否不那么好奇? VB.NET 标准化

c# - 无法加载文件或程序集 'Microsoft.SqlServer.Types,版本 = 11.0.0.0

c# - Windows 窗体控件和 LINQ;我应该返回什么?