WinForm--(簡單的實現鼠標矩形多選框選中)


1.根據  heisetoufa 的博客 c# winform 用鼠標畫拉出來的虛線框,鼠標框選邊框效果 實現的一個效果

 

        private void Form1_Load(object sender, EventArgs e)
        {

            panel1.MouseDown += new MouseEventHandler(MouseDown);
            panel1.MouseUp += new MouseEventHandler(MouseUp);
            panel1.MouseMove += new MouseEventHandler(MouseMove);

        }
        //定義兩個變量 
        bool MouseIsDown = false;
        Rectangle MouseRect = Rectangle.Empty; //矩形(為鼠標畫出矩形選區)
        #region mouseMove
        //定義三個方法
        private void ResizeToRectangle(object sender, Point p)
        {
            DrawRectangle(sender);
            MouseRect.Width = p.X - MouseRect.Left;
            MouseRect.Height = p.Y - MouseRect.Top;
            DrawRectangle(sender);
        }
        private void DrawRectangle(object sender)
        {
            Rectangle rect = ((Panel)sender).RectangleToScreen(MouseRect);
            ControlPaint.DrawReversibleFrame(rect, Color.White, FrameStyle.Dashed);
        }

        private void DrawStart(object sender, Point StartPoint)
        {
            ((Panel)sender).Capture = true;
            Cursor.Clip = ((Panel)sender).RectangleToScreen(((Panel)sender).Bounds);
            MouseRect = new Rectangle(StartPoint.X, StartPoint.Y, 0, 0);
        }

        private void MouseDown(object sender, MouseEventArgs e)
        {
            MouseIsDown = true;
            DrawStart(sender, e.Location);
        }

        private void MouseUp(object sender, MouseEventArgs e)
        {
            this.Capture = false;
            Cursor.Clip = Rectangle.Empty;
            MouseIsDown = false;
            DrawRectangle(sender);
            MouseRect = Rectangle.Empty;
        }

        private void MouseMove(object sender, MouseEventArgs e)
        {
            if (MouseIsDown)
                ResizeToRectangle(sender, e.Location);


            foreach (Control button in ((Panel)sender).Controls)
            {
                if (MouseRect.IntersectsWith(button.Bounds)) //相交( MouseRect.Contains  完全包含)
                {
                    button.BackColor = Color.Blue;
                }

            }

        }

功能很粗糙,就是這么個意思,有需要再深入研究!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM