两种方式:
1)private void HandleZoomDragEx(Graphics g)
            {
                if (Math.Abs(_dragStartPt.X - _dragEndPt.X) < 4 &&
                   Math.Abs(_dragEndPt.Y - _dragStartPt.Y) < 4)
                {
                    return;
                }                using (Pen pen = new Pen(Color.Black, 1))
                {
                    pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
                    pen.DashPattern = new float[2] { 3, 3 };
                    pen.DashOffset = 3;
                    int w, h;
                    w = Math.Abs(_dragStartPt.X - _dragEndPt.X);
                    h = Math.Abs(_dragStartPt.Y - _dragEndPt.Y);                    Point? ptStart = null;
                    if (_dragStartPt.X < _dragEndPt.X && _dragStartPt.Y < _dragEndPt.Y)
                    {
                        ptStart = _dragStartPt;
                    }
                    else if (_dragStartPt.X > _dragEndPt.X && _dragStartPt.Y > _dragEndPt.Y)
                    {
                        ptStart = _dragEndPt;
                    }
                    else if (_dragStartPt.X > _dragEndPt.X && _dragStartPt.Y < _dragEndPt.Y)
                    {
                        ptStart = new Point(_dragEndPt.X, _dragStartPt.Y);
                    }
                    else
                    {
                        ptStart = new Point(_dragStartPt.X, _dragEndPt.Y);
                    }                    g.DrawRectangle(pen, new Rectangle(ptStart.Value, new Size(w, h)));
                }
            }
2)
ControlPaint.DrawReversibleFrame(rect, BackColor, FrameStyle.Dashed);