在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中创建水印[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Winforms:在设计器中创建对象并对其进行自定义

在 winforms 中创建动态 UI

C#,Winform - 创建 PDF [重复]

在 WinForms 中,如何在 DevExpress GridControl 中创建删除按钮?

C#在WINForm程序中创建XML文件

C#winform中为啥一个窗体的对象可以调用在另一个窗体中创建的一个类未实例化下