ListView 显示ToolTip的代码
2015-04-02 11:56:22 访问(1705) 赞(0) 踩(0)
#region ListView 显示ToolTip的代码
/// <summary>
/// 定义外部存储变量
/// </summary>
private Point pointView = new Point(0, 0);
/// <summary>
/// ListView鼠标移动,设置ToolTip的代码
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void listView_Main_MouseMove(object sender, MouseEventArgs e)
{
ListViewItem lvi = this.listView_Main.GetItemAt(e.X, e.Y);
if (lvi != null)
{
if (lvi.SubItems.Count == 0)
{
tip.Hide(listView_Main);
}
else
{
// 防止tooltip不停闪烁问题
if (pointView.X != e.X || pointView.Y != e.Y)
{
int idx = ListViewItemSubItemsIndexGet(lvi, e.X);
if (idx < 0)
{
idx = 0;
}
else if (idx >= lvi.SubItems.Count)
{
idx = lvi.SubItems.Count - 1;
}
tip.SetToolTip(listView_Main, lvi.SubItems[idx].Text);
}
}
}
else
{
tip.Hide(listView_Main);//没有取到item自动隐藏
}
pointView = new Point(e.X, e.Y);
}
/// <summary>
///
/// </summary>
/// <param name="lvi"></param>
/// <param name="X"></param>
/// <returns></returns>
public int ListViewItemSubItemsIndexGet(ListViewItem lvi, int X)
{
int iCount = lvi.SubItems.Count;
for (int i = 0; i < iCount; ++i)
{
if (lvi.SubItems[i].Bounds.X > X)
{
if (i == 0)
return 0;
else
return i - 1;
}
}
return iCount - 1;
}
#endregion ListView 显示ToolTip的代码
标签:
ListView 显示ToolTip的代码 


上一条:
下一条:
相关评论
发表评论