如何确定何时显示工具提示?

时间:2009-06-29 03:13:48

标签: c# .net winforms controls tooltip

我正在.Net WinForms中编写一个日历控件,它将显示每个日期的工具提示。

确定何时显示工具提示的最佳方法是什么?

立即在MouseMove中显示它会阻碍它,所以我希望它显示鼠标悬停在每个日期单元格上的时间。

MouseHover事件仅在MouseEnter之后第一次悬停时触发,因此我无法使用它。

最好的方法是什么?

编辑:我正在使用WinForms

3 个答案:

答案 0 :(得分:6)

Enter和Hover之间的时间延迟在SystemInformation.MouseHoverTime中指定。

如果由于某种原因,您使用的任何UI框架的内置工具提示处理代码都不够,您可以在每个MouseMove之后启动一个Timer,并在它触发时显示工具提示。显然,每次移动鼠标时都需要重置Timer,以防止出现长串“工具提示雨”。

答案 1 :(得分:0)

查看ToolTip类的AutoPopDelay,InitialDelay和ReshowDelay属性,因为它们控制工具提示的行为。

我一般都会玩弄价值观,直到我得到'感觉'正确的东西。当工具提示立即显示时很烦人,而对于简短的工具提示,当它们过早消失时它也很烦人。对于很长的工具提示,比方说,几个段落(是的,糟糕的设计决定,但如果有很多信息要阅读,至少让我读一读!)那么只要我的鼠标静止就应该保持打开状态。

来自MSDN的tooltip example提供以下值:

 AutoPopDelay = 5000;
 InitialDelay = 1000;
 ReshowDelay = 500;
 // Force the ToolTip text to be displayed whether or not the form is active.
 ShowAlways = true;

正如评论中所提到的,海报希望以编程方式触发工具提示。为此,需要调用ToolTip.Show()。要获得延迟效果,您可能希望运行一个计时器来计算鼠标静止的时间。只要鼠标在控件内进入,离开或移动,就应重置此时间。

答案 2 :(得分:0)

了解您正在使用哪种技术(ASP.NET?Forms?WPF?)会有所帮助,因为它们都有不同的方法来实现工具提示:

  • 使用ASP.NET,您只需设置 控件的ToolTip属性(例如 作为在日历中显示数字的Label控件,以及它 将自动显示工具提示 在徘徊之后稍有延迟 在控制之上。
  • 在表格方面,我认为你必须这样做 实际上创建一个ToolTip对象 附上一个控件。
  • 在WPF中,您可以添加Label.ToolTip 元素到您的XAML代码。

但是,在所有情况下,都有内置的方法来执行此操作,因此您可能根本不需要编写自己的代码。

如果您的情况如此习惯,以至于您需要编写自己的代码,我真的需要了解更多有关您如何表示日历中的数字以帮助您的信息。

最后一件事:您并没有真正问过这个问题 - 它可能不在您的控制之下 - 但您可能想问问自己,工具提示是否是首先显示日历信息的最佳方式。如果空间非常紧张,那么答案可能是“是”,但如果你有足够的空间来显示日历事件(甚至是每个事件的前几个单词),这将使用户不​​必“擦洗整个日历“(即,单独滚动每个日期)。

-Dan