我在窗体中有一个文本框。在表单加载事件上,我想我的textbox.text =“输入名称”,但它应该显示为如果单击文本框,文本框的文本会消失。 附加的图像将帮助你理解我的问题:)c#窗口中的文本框形式
回答
要么你在谷歌搜索找到相同的网站,或者你正在复制一个[先前的答案](http://stackoverflow.com/questions/578193/watermark-system-windows-forms-textbox-using- C-尖锐)。如果是后者,请确保在答案中引用作者的帖子。 – 2011-12-19 20:00:40
@BradChristie好点。我用这个帖子标记了这个q,不妨把它张贴在这里。 – 2011-12-19 20:02:56
此外,我在这里是另一个[使用WndProc](http://stackoverflow.com/questions/2539903/sendmessage-vs-wndproc)(如果作者不介意)。 – 2011-12-19 20:04:26
使用TextBox.ForeColor并将其更改为灰色和进入/离开文本框的事件来改变颜色和删除文字
这里是一个解决方案,没有DllImport
用法
/// <summary>
/// inspired by this forum entry: http://social.msdn.microsoft.com/Forums/en-US/winforms/thread/10f75954-6d14-4926-a02d-98649653b9c8/
/// Watermark TextBox in winform
/// </summary>
public class WatermarkTextBox : TextBox
{
private string watermarkText;
private Color watermarkColor;
private Color foreColor;
private bool isTextBoxEmpty;
public WatermarkTextBox()
{
this.WatermarkText = "Watermark Text...";
this.WatermarkColor = Color.FromKnownColor(KnownColor.Silver);
this.Enter += onEnter;
this.Leave += onLeave;
}
[Browsable(true)]
public new Color ForeColor
{
get { return this.foreColor; }
set
{
if (value == this.foreColor)
{
return;
}
this.foreColor = value;
if (!this.isTextBoxEmpty)
{
base.ForeColor = value;
}
}
}
[Browsable(true)]
public Color WatermarkColor
{
get { return this.watermarkColor; }
set
{
if (value == this.watermarkColor)
{
return;
}
this.watermarkColor = value;
if (this.isTextBoxEmpty)
{
base.ForeColor = this.watermarkColor;
}
}
}
[Browsable(true)]
public string WatermarkText
{
get { return this.watermarkText; }
set
{
if (value == this.watermarkText)
{
return;
}
this.watermarkText = value;
if (base.Text.Length == 0)
{
this.isTextBoxEmpty = true;
base.Text = this.watermarkText;
base.ForeColor = this.watermarkColor;
}
this.Invalidate();
}
}
public override string Text
{
get { return this.isTextBoxEmpty ? string.Empty : base.Text; }
set
{
if (string.IsNullOrEmpty(value))
{
this.isTextBoxEmpty = true;
base.ForeColor = this.watermarkColor;
base.Text = this.watermarkText;
}
else
{
this.isTextBoxEmpty = false;
base.ForeColor = this.foreColor;
base.Text = value;
}
}
}
private void onEnter(object sender, EventArgs e)
{
if (this.isTextBoxEmpty)
{
this.isTextBoxEmpty = false;
base.ForeColor = this.foreColor;
base.Text = string.Empty;
}
}
private void onLeave(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(base.Text))
{
this.isTextBoxEmpty = true;
base.ForeColor = this.watermarkColor;
base.Text = this.watermarkText;
}
else
{
this.isTextBoxEmpty = false;
}
}
}
[水印System.Windows.Forms.TextBox使用C#]的
- 1. 形状窗口形式uwp与c#
- 2. 窗口形式的安全C#
- 3. 编辑的App.config C#窗口形式
- 4. 将窗口标题更改为Objective-C文本框中的窗口标题?
- 5. 使用另一个窗口填充窗口中的文本框
- 6. C#在文本框中禁用默认窗口上下文栏
- 7. C#:PDF文件在新窗口中打开..而不是形式
- 8. 在win32 API中调整窗口大小的文本框c
- 9. 无法在弹出式窗口中选择WPF文本框中的文本
- 10. 从不是我的窗口的文本框中获取文本c#
- 11. C# - 如何禁用窗口形式的上下文菜单?
- 12. 不能移动光标在窗口中使用鼠标的文本框儿童形式C#
- 13. gtkmm中的窗形窗口
- 14. 文本弹出窗口澄清面向用户的形式
- 15. 基于形式文本的图像弹出窗口
- 16. 如何在Objective-C中使用文本框弹出窗口?
- 17. 得到WPF窗口上下文形式
- 18. 创建方形窗口C++
- 19. c#非矩形窗口,库?
- 20. C#找到画面的窗口形式的顶部中央
- 21. 如何格式化MDI子窗体中的文本框在c#
- 22. 定位窗口形式
- 23. jQuery模态窗口形式
- 24. 关闭窗口形式
- 25. 如何更新C#窗口与接收到的串口串口文本框?
- 26. jQuery的:在对话框窗口中的文本框不工作
- 27. 形式的JavaScript模式窗口
- 28. 如何在ToolStripControlHost中设置DataGridView的DataSource? (C#窗口形式)
- 29. 无法找到模态对话框窗口中的文本框?
- 30. 在C++窗口中绘制图形
可能重复(http://stackoverflow.com/questions/578193/watermark-system-windows-forms-textbox-using-c-sharp) – Caleb 2011-12-20 04:38:54