如何防止使用事件重复代码

beh*_*nam 4 c#

我是初学程序员,我觉得我不必要地重复代码.我想制作一个由16个图片框组成的图片益智游戏.问题是我觉得我必须为每个图片框的事件重复代码,如下例所示:

       Point move;
    bool isDragging = false;
    private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
    {
        isDragging = true;
        move = e.Location;
    }

    private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
    {

        if(isDragging == true)
        {
            pictureBox1.Left += e.X - move.X;
            pictureBox1.Top += e.Y - move.Y;
            pictureBox1.BringToFront();
        }

    }

    private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
    {
        isDragging = false;
    }
Run Code Online (Sandbox Code Playgroud)

Ice*_*ind 8

只需为您的3个事件中的每个事件创建一个方法:

private void pictureBox_MouseDown(object sender, MouseEventArgs e)
{
    isDragging = true;
    move = e.Location;
}

private void pictureBox_MouseMove(object sender, MouseEventArgs e)
{

    if(isDragging == true)
    {
        // Luckily the sender parameter will tell us which PictureBox we are dealing with
        PictureBox pb = (PictureBox)sender;
        pb.Left += e.X - move.X;
        pb.Top += e.Y - move.Y;
        pb.BringToFront();
    }

}

private void pictureBox_MouseUp(object sender, MouseEventArgs e)
{
    isDragging = false;
}
Run Code Online (Sandbox Code Playgroud)

然后转到设计器中的每个16个图片框,并将MouseUp事件处理程序设置为指向pictureBox_MouseUpMouseMove指向要指向pictureBox_MouseMoveMouseDown事件处理程序的事件处理程序pictureBox_MouseMove.为16个图片框中的每一个执行此操作.