c#winform中tooltip闪烁

DimonHe 2017-06-08 11:01:43
将由于datagridview控件自身tooltip显示时间较短,所以将其showcelltooltips属性设置为false,并添加tooltip控件,并在CellMouseEnter和CellMouseLeave中判断是否tooltip.show();但是现在问题是,如果单元格内容过多,tooltip会将单元格覆盖,那么tooltip就会一直闪烁,求大神帮助!(ps:记录坐标或者内容都不行)

#region 提示悬浮窗
int x = 0, y = 0;
string str_tip="";
private void datagv_CellMouseEnter(object sender, DataGridViewCellEventArgs e)
{
//判断选择单元格是否有效
if (e.RowIndex < 0 || e.ColumnIndex < 0)
{
return;
}
int i = e.ColumnIndex;//获取鼠标停留的列索引
int ei = e.RowIndex;//获取停留的行索引
string tip_tem="";
if (x != ei || y != i || str_tip != tip_tem)
{
this.toolTip1.Hide(this.datagv);
}
if (i >= 0 && ei >= 0)
{
if (x != ei || y != i || str_tip != tip_tem)//这里添加判断后还是闪烁???
{
Point mousePos = PointToClient(MousePosition);//获取鼠标当前的位置
string tip = this.datagv[i, ei].Value.ToString();//获取鼠标停留的单元格中的值
tip_tem = tip;
this.toolTip1.Show(tip, this.datagv, new Point(mousePos.X, ei * 35));//在指定位置显示提示框
toolTip1.Active= true;
x = ei;
y = i;
}
}
}

private void datagv_CellMouseLeave(object sender, DataGridViewCellEventArgs e)
{
this.toolTip1.Hide(this.datagv);
}
#endregion
...全文
639 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
DimonHe 2017-06-08
  • 打赏
  • 举报
回复
顶!
DimonHe 2017-06-08
  • 打赏
  • 举报
回复
没有更好的解决办法,只好把CellMouseEnter事件改为CellMouseClick事件了

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧