我有一个DataGridView,显示每节课的学生积分,在某些时候我应该通过工具提示显示有关该点的一些信息。我想要的是当用户进入特定单元格时,2秒后工具提示将出现在当前单元格,将显示2秒时间并显示有关该点的信息。我使用了那段代码:
private void dgwPNotlar_CellMouseEnter(object sender, DataGridViewCellEventArgs e)
{
var hucre = dgwPNotlar.CurrentCell;
var hucre_loc = dgwPNotlar.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, false);
toolTip1.Show("//Info&" + e.ColumnIndex.ToString() + "&" + e.RowIndex.ToString(), dgwPNotlar, hucre_loc.X, hucre_loc.Y);
}
我为ToolTip设置了AutomaticDelay 500,AutoPopDelay 2000,InitialDelay 2000和Reshow Delay 2000。但是当我进入Datagridview单元格时,ToolTip会立即出现并且不会消失。当我检查我的代码时,我看到这个方法被调用了几次,尽管鼠标仍然在单元格中。
我该怎么办?
答案 0 :(得分:1)
如果ToolTip
没有自动显示,那么所有“自动”内容都无关紧要。你手动显示它,所以没有延迟。如果您想延迟,则需要使用Timer
。
如果您希望延迟2秒,则Start
Timer
Interval
为Show
,ToolTip
为Tick
CellMouseLeave
事件处理程序。您也可以处理网格的Stop
事件以及Timer
{{1}},因此如果用户在延迟播放之前离开该单元格,则会在显示之前取消提示。
答案 1 :(得分:0)
我发现为什么DataGridView_CellEnter事件被调用了好几次。当工具提示显示在单元格上时(基于单元格矩形的位置),鼠标指针停留在工具提示上,并且点跟踪器将单元格覆盖和工具提示覆盖。这使得CellEnter和CellLeave methots多次调用。
谢谢大家。