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

时间:2013-02-04 20:47:32

标签: c# .net textbox tooltip

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

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

例如,我有以下代码:

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时会执行此操作,但只有当鼠标悬停在tooltip上时才会显示textbox。有没有人有任何想法解决这个问题?我想也许tt.ShowAlways = true可能有用,但显然不行。

5 个答案:

答案 0 :(得分:26)

挂钩到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值进行游戏,将其移动到您想要的位置。可见时间是它消失多久。

答案 1 :(得分:3)

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

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

tt.InitialDelay = 0;

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

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

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

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

答案 2 :(得分:2)

您可以显示如下工具提示:

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

答案 3 :(得分:1)

试试这个。 (基于上面的答案) 为要拥有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);
   }
}

答案 4 :(得分:0)

您应该使用if ( o.Name == label1.Name)而不是if ( o.Name == "label1"),因为如果您重命名label1,此行也会被修改。

更多:if(o.equals(label1)) ...