在文本框条目上显示工具提示

我有一个textbox ,需要以某种方式输入数据。 我已经实现了一些单元validation技术来检查输入后的数据,但我想在输入数据之前向用户提供一些信息。

为此,我想在用户进入工具箱时弹出的textbox添加tooltip ,然后在他们开始输入时退出。

例如,我有以下代码:

 private void YearEdit_Enter(object sender, EventArgs e) { ToolTip tt = new ToolTip(); tt.IsBalloon = true; tt.InitialDelay = 0; tt.ShowAlways = true; tt.SetToolTip(YearEdit, "Enter 4 digit year."); } 

这在用户输入textbox时执行,但只有当鼠标hover在textbox时才会显示tooltip 。 有没有人有任何想法解决这个问题? 我想也许tt.ShowAlways = true可能tt.ShowAlways = true ,但显然不行。

挂钩到textbox.enter事件并使用以下代码:

 private void textBox1_Enter(object sender, EventArgs e) { TextBox TB = (TextBox)sender; int VisibleTime = 1000; //in milliseconds ToolTip tt = new ToolTip(); tt.Show("Test ToolTip",TB,0,0,VisibleTime); } 

使用X / Y值进行游戏以将其移动到您想要的位置。 可见时间是它消失多久。

仅当鼠标仍处于设计状态时才会显示工具提示。

您可以尝试将InitialDelay设置为0:

 tt.InitialDelay = 0; 

但这仍然需要鼠标暂时静止。

然而,还有其他方法。 显示所需输入的常用方法是在文本框中使用水印(淡化文本),该水印显示用户开始键入之前所需的格式。

如果你真的想要一个工具提示,那么你可以添加一个信息图标(通常是“i”),它会在它hover时显示工具提示,或者实现你自己的工具提示。

如果您将日期分成几部分(单独的日,月,年),它也可能有效。 这将允许您更好地控制用户可以输入的内容 – 月份可以成为下拉/combobox,因此它始终是正确的格式。

你可以显示一个工具提示,如下所示:

 ToolTip t = new ToolTip(); t.Show("Hello World", textBox1, 1000); 

试试这个。 (基于上面的答案)为您想拥有ToolTip的所有控件添加事件处理程序。 将所有事件处理程序指向同一方法。 然后构建你这样的处理方法

 private void procToolTips(object sender, EventArgs e) { ToolTip tt = new ToolTip(); Control o = (Control)sender; if ( o.Name == "label1") { tt.Show("Lorem ipsum dolor sit ame", o, 1000); } }