【发布时间】:2010-02-18 19:30:19
【问题描述】:
我有一个标准的 TextBox 控件,我试图模仿 StackOverflow 上的标题和标签框中的“软描述”。本质上,当用户的焦点进入控件时,它隐藏了本例中的描述(“用户名”),并将对齐和颜色设置为标准文本控件的对齐和颜色。当用户离开文本框时,我想检查用户是否真的输入了任何内容,否则将用户名显示备份。
例如:
private void tbUsername_Enter(object sender, EventArgs e)
{
if (tbUsername.TextAlign == HorizontalAlignment.Center)
{
tbUsername.TextAlign = HorizontalAlignment.Left;
tbUsername.ForeColor = SystemColors.ControlText;
tbUsername.Text = String.Empty;
}
}
private void tbUsername_Leave(object sender, EventArgs e)
{
if (tbUsername.Text == String.Empty)
{
tbUsername.TextAlign = HorizontalAlignment.Center;
tbUsername.ForeColor = SystemColors.InactiveCaption;
tbUsername.Text = "Username";
}
}
不幸的是,当我设置这些事件时,用户无法退出用户名控件。控件只是闪烁,然后控件返回到文本框控件本身,直到用户输入内容,跳过事件主体。
如果我在事件中调用this.SelectNextControl(),则事件进入无限循环。
有人看到我做错了吗?
【问题讨论】:
-
有趣.. 似乎是 TextAlign 的东西。如果我将其注释掉,似乎还可以。
-
+1 很好的发现。希望其中一种解决方法对您有用,尽管两者都不是最佳的。可能可以将此发布到 MSDN 论坛 (social.msdn.microsoft.com/Forums/en-US/categories) 看看他们是否知道发生了什么。