Example #1
0
        protected override void OnMouseMove(MouseEventArgs e)
        {
            Point m_ptMousePos = e.Location;

            if (e.Button == MouseButtons.XButton1)
            {
                chatVScroll.Value += 50;
            }
            else if (e.Button == MouseButtons.XButton2)
            {
                chatVScroll.Value -= 50;
            }

            if (chatVScroll.IsMouseDown)
            {
                //如果滚动条的滑块处于被点击 那么移动
                chatVScroll.MoveSliderFromLocation(e.Y);
                return;
            }
            else
            {
                if (m_ptMousePos.X != old.X && m_ptMousePos.Y != old.Y && IsMouseDown)
                {
                    chatVScroll.MouseDownY  = MouseDownY;
                    chatVScroll.IsMouseDown = true;
                }
                else
                {
                    try
                    {
                        foreach (DownListItem its in Items)
                        {
                            if (its.Visible)
                            {
                                Rectangle rect = its.Bounds;
                                int       tom  = chatVScroll.Bounds.Y + chatVScroll.Value;
                                rect.Y -= tom;
                                if (rect.Contains(m_ptMousePos))
                                {
                                    int count = 0;
                                    if (!its.MouseHover)
                                    {
                                        count++;
                                        its.MouseHover = true;
                                    }

                                    Rectangle rect1 = its.Btn1Bounds;
                                    rect1.Y -= tom;
                                    if (rect1.Contains(m_ptMousePos))
                                    {
                                        if (its.MouseHover2)
                                        {
                                            its.MouseHover2 = false;
                                            count++;
                                        }
                                        if (!its.MouseHover1)
                                        {
                                            its.MouseHover1 = true;
                                            count++;
                                        }
                                    }
                                    else
                                    {
                                        Rectangle rect2 = its.Btn2Bounds;
                                        rect2.Y -= tom;
                                        if (rect2.Contains(m_ptMousePos))
                                        {
                                            if (its.MouseHover1)
                                            {
                                                its.MouseHover1 = false;
                                                count++;
                                            }
                                            if (!its.MouseHover2)
                                            {
                                                its.MouseHover2 = true;
                                                count++;
                                            }
                                        }
                                        else
                                        {
                                            if (its.MouseHover2)
                                            {
                                                its.MouseHover2 = false;
                                                count++;
                                            }
                                            if (its.MouseHover1)
                                            {
                                                its.MouseHover1 = false;
                                                count++;
                                            }
                                        }
                                    }
                                    if (count > 0)
                                    {
                                        this.Invalidate(rect);
                                    }
                                }
                                else
                                {
                                    int count = 0;
                                    if (its.MouseHover)
                                    {
                                        count++;
                                        its.MouseHover = false;
                                    }
                                    if (its.MouseHover1)
                                    {
                                        count++;
                                        its.MouseHover1 = false;
                                    }
                                    if (its.MouseHover2)
                                    {
                                        count++;
                                        its.MouseHover2 = false;
                                    }
                                    if (count > 0)
                                    {
                                        this.Invalidate(rect);
                                    }
                                }
                            }
                        }
                    }
                    catch { }
                }
            }


            if (chatVScroll.ShouldBeDraw)
            {
                if (chatVScroll.Bounds.Contains(m_ptMousePos))
                {
                    //ClearItemMouseOn();
                    if (chatVScroll.SliderBounds.Contains(m_ptMousePos))
                    {
                        chatVScroll.IsMouseOnSlider = true;
                    }
                    else
                    {
                        chatVScroll.IsMouseOnSlider = false;
                    }
                    if (chatVScroll.UpBounds.Contains(m_ptMousePos))
                    {
                        chatVScroll.IsMouseOnUp = true;
                    }
                    else
                    {
                        chatVScroll.IsMouseOnUp = false;
                    }
                    if (chatVScroll.DownBounds.Contains(m_ptMousePos))
                    {
                        chatVScroll.IsMouseOnDown = true;
                    }
                    else
                    {
                        chatVScroll.IsMouseOnDown = false;
                    }
                    return;
                }
                else
                {
                    chatVScroll.ClearAllMouseOn();
                }
            }
            //m_ptMousePos.Y += chatVScroll.Value;//如果不在滚动条范围类 那么根据滚动条当前值计算虚拟的一个坐标
            //ClearItemMouseOn();
            base.OnMouseMove(e);
        }