初学者,C# 画点画线有关问题

菜鸟求助,C# 画点画线问题
请教各位大神,我想在同一个picturebox上点击画点或画线按钮分别实现画点和画线。
目前我采用的是pictureBox_MouseClick中实现画点, pictureBox_MouseDown和pictureBox_MouseUp中实现画线。
单独实现画点或画线能实现了。但是放在一起出现了Click和MouseDown、MouseUp 的冲突,不知道该如何解决啊?

------解决方案--------------------
写了个简单的例子给你,你参考看看
初学者,C# 画点画线有关问题

public abstract class DrawObject
{
    public int Width { get; set; }
    public Color Color { get; set; }
    public float X { get; set; }
    public float Y { get; set; }

    public DrawObject()
    {
        Width = 1;
        Color = Color.Black;
    }
    public abstract void Render(Graphics g);
}

public class DrawDot : DrawObject
{
    public override void Render(Graphics g)
    {
        g.FillRectangle(new SolidBrush(Color), X, Y, Width, Width);
    }
}

public class DrawLine : DrawObject
{
    public Point StartPoint { get; set; }
    public Point EndPoint { get; set; }

    public override void Render(Graphics g)
    {
        g.DrawLine(new Pen(Color, Width), StartPoint, EndPoint);
    }
}


public abstract class DrawTool
{
    protected DrawCanvas canvas;
    public DrawTool(DrawCanvas canvas)
    {
        this.canvas = canvas;
    }

    public abstract void MouseMove(MouseEventArgs e);
    public abstract void MouseDown(MouseEventArgs e);
    public abstract void MouseUp(MouseEventArgs e);
}

public class DrawDotTool : DrawTool
{
    public DrawDotTool(DrawCanvas canvas)
        : base(canvas)
    {

    }

    public override void MouseDown(MouseEventArgs e)
    {
        DrawDot drawDot = new DrawDot();
        drawDot.X = e.X;
        drawDot.Y = e.Y;
        drawDot.Width = canvas.DrawStyle.Width;
        drawDot.Color = canvas.DrawStyle.Color;
        canvas.AddDrawObject(drawDot);
    }

    public override void MouseMove(MouseEventArgs e)
    {
    }

    public override void MouseUp(MouseEventArgs e)
    {
    }
}

public class DrawLineTool : DrawTool
{
    private Point startPoint;
    private Point endPoint;
    private DrawLine drawline;
    private bool isDrawing = false;

    public DrawLineTool(DrawCanvas canvas)
        : base(canvas)
    {

    }

    public override void MouseDown(MouseEventArgs e)
    {
        startPoint = new Point(e.X, e.Y);
        isDrawing = true;
        drawline = new DrawLine();
        drawline.Width = canvas.DrawStyle.Width;