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的代码 

上一条:

下一条:


 

相关评论

评论加载中……
 

发表评论

类型:
内容:
  (Alt+Enter)
 
  ┈全部┈  
 
(显示默认分类)