在winforms中创建水印[重复]
Posted
技术标签:
【中文标题】在winforms中创建水印[重复]【英文标题】:Creating a Watermark in winforms [duplicate] 【发布时间】:2020-03-26 21:39:12 【问题描述】:我正在开发一个 Winforms 项目,我想在 TextBox 中创建一个 Watermark。我尝试了一个似乎是正确解决方案但不正确的代码。
这是我的代码:
private void Form1_Load(object sender, EventArgs e)
textBox1.Text = "Veuillez entrez votre nom ici";
if (textBox1.GotFocus)
textBox1.Text = "";
我在“GotFocus”收到此错误:
CS0079 C# 事件只能出现在 += 或 -= 的左侧
我在 Google 上进行了搜索,但没有找到任何可以帮助我解决问题的解决方案。 我应该使用什么来代替“GotFocus”来创建水印?
最好的问候,Zancrew。
【问题讨论】:
“我在谷歌上搜索,但没有找到任何解决方案来帮助我的情况” - 在我的!!谷歌今天坏了!!内核恐慌 哈哈哈哈哈哈:D 你不能使用 GotFocus 事件作为布尔值。 gotfocus 是一个你不能说的事件,如果(事件)......你将代码分配给事件...... 这能回答你的问题吗? Adding placeholder text to textbox 注意:虽然它是 WPF,但有些解决方案也适用于 WinForms 【参考方案1】:一个懒惰的解决方案
创建一个标签并将其定位到您希望显示水印的位置并禁用它 然后将下面的代码粘贴到文本框的 textchanged 事件中
label_watermark.Visible = textBox1.Text.Length<1;
【讨论】:
阅读链接的重复帖子,因为它根本不是一个好的解决方案。 什么意思? 有两种显示水印的好方法,一种是最可靠的,发送EM_SETCUEBANNER 就像here 所做的一样,另一种也适用于多行文本框,让您使用不同的字体和颜色处理WM_PAINT 就像here 所做的一样。 他们说它在 cmets 上不太可靠,因为我没有说它好或更好。这是一种简单而懒惰的方法。不过还是很高兴知道。以上是关于在winforms中创建水印[重复]的主要内容,如果未能解决你的问题,请参考以下文章