22

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

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

例如我有以下代码:

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可行,但显然不行。

4

5 回答 5

31

挂钩到 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 值将其移动到您想要的位置。可见时间是它消失之前的时间。

于 2013-02-04T21:04:02.180 回答
3

工具提示仅在鼠标仍在设计时出现。

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

tt.InitialDelay = 0;

但这仍然需要鼠标在瞬间静止。

但是还有其他方法。显示所需输入的一种常用方法是在文本框中使用水印(褪色文本),该水印显示在用户开始输入之前所需的格式。

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

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

于 2013-02-04T20:54:57.240 回答
3

您也可以像这样显示工具提示:

ToolTip t = new ToolTip();
t.Show("Hello World", textBox1, 1000);
于 2015-10-06T01:20:26.783 回答
1

试试这个。(基于上面的答案)为您想要为其设置工具提示的所有控件添加事件处理程序。将所有事件处理程序指向相同的方法。然后像这样构造你的处理方法

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);
   }
}
于 2017-03-05T15:31:56.997 回答
0

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

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

于 2019-03-08T14:33:16.333 回答