我有一个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
可能有用,但显然不行。
答案 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))
...