Windows窗体C#(用于100个对象的DragDrop)

Windows窗体C#(用于100个对象的DragDrop),c#,windows,forms,winforms,drag-and-drop,C#,Windows,Forms,Winforms,Drag And Drop,我现在有一个关于我学校项目的问题(我们想开发一个类似方块拼图的游戏)。 我们建造一个场地(10x10) 我已经开始为“my field1x1”管理DragDrop了 我的问题是:如何简化不需要手动创建100个DragDrop的代码? 因为 这就是解决方案您应该查看sender参数。它将是拖动控件,在将其强制转换为pbox后,您可以访问其所有属性。我希望您在标签中有一个有用的名称或数据可以使用。。您可以将所有事件映射到同一代码,也可以创建pbox子类。要连接事件,您可以使用一两个循环。谢谢!使用这

我现在有一个关于我学校项目的问题(我们想开发一个类似方块拼图的游戏)。 我们建造一个场地(10x10)

我已经开始为“my field1x1”管理DragDrop了

我的问题是:如何简化不需要手动创建100个DragDrop的代码? 因为


这就是解决方案

您应该查看
sender
参数。它将是拖动控件,在将其强制转换为pbox后,您可以访问其所有属性。我希望您在标签中有一个有用的名称或数据可以使用。。您可以将所有事件映射到同一代码,也可以创建pbox子类。要连接事件,您可以使用一两个循环。谢谢!使用这些私有的void字段1x1_DragDrop(对象发送方,DragEventArgs e){if(发送方是PictureBox){((PictureBox)发送方).Image=(位图)e.Data.GetData(DataFormats.Bitmap,true);}
private void field1x1_DragDrop(object sender, DragEventArgs e)
        {
            fieldBoxes[0,0].Image = (Bitmap)e.Data.GetData(DataFormats.Bitmap, true);
        }

foreach (PictureBox checks in fieldBoxes)
            {
                checks.AllowDrop = true;
                checks.DragEnter += field1x1_DragEnter;
                checks.DragDrop += field1x1_DragDrop;
            }
private void field1x1_DragDrop(object sender, DragEventArgs e)
        {
            if (sender is PictureBox)
            {
                ((PictureBox)sender).Image = (Bitmap)e.Data.GetData(DataFormats.Bitmap, true);
            }
            
        }