Пример #1
0
        /// <summary>
        /// 鼠标移动判定是哪个数据被选中
        /// </summary>
        /// <param name="x"></param>
        /// <param name="y"></param>
        /// <returns>DataModel 基础数据类型</returns>
        private DataModel mouseMove(int x, int y)
        {
            //Console.WriteLine("x = {0}, y ={1}", x, y);
            //全部遍历太耗时;从y获取比较接近的index
            //如果panel的数据太多超过最大高度 Y会变为负数;
            if (y < 0)
            {
                y = -y;
                if (MaxHeight < y)
                {
                    MaxHeight = y;
                }
                y = MaxHeight + (MaxHeight - y);
            }
            //Console.WriteLine("x = {0}, y ={1}", x, y);
            int index = getIndexFromList(y);
            int size  = list.Count;

            Console.WriteLine("index = {0}, count = {1}", index, list.Count);
            PositionRectData item = null;
            int times             = 0;

            for (int i = index; i < size; i++)
            {
                item = list[i];
                times++;
                if (item.isInRect(x, y))
                {
                    if (currentIndex == i)
                    {
                        return(item.data);
                    }
                    currentIndex = i;
                    this.Invalidate();
                    currentData        = new CurrentPositionRectData(x, y, item.data);
                    popPanel.Location  = new Point(x, y);
                    popPanel.Width     = currentData.Width;
                    popPanel.Height    = currentData.Height;
                    popPanel.BackColor = Color.White;
                    //graphics.FillRectangle(new SolidBrush(Color.Black), rect);
                    return(item.data);
                }
            }
            Console.WriteLine("times = {0}", times);
            return(null);
        }
Пример #2
0
 /// <summary>
 /// 介绍之类的绘制
 /// </summary>
 /// <param name="e"></param>
 /// <param name="rectPosData"></param>
 /// <param name="GraphicalColor"></param>
 /// <param name="TextColor"></param>
 public abstract void introducePaint(Graphics g, CurrentPositionRectData rectPosData, Color GraphicalColor, Color TextColor);