Windows 窗体 C#(拖放 100 个对象)

Posted

技术标签:

【中文标题】Windows 窗体 C#(拖放 100 个对象)【英文标题】:Windows Forms C# (DragDrop for 100 objects) 【发布时间】:2021-01-03 00:41:18 【问题描述】:

我目前有一个关于我的学校项目的问题(我们想开发一个类似于积木拼图的游戏)。 我们构建一个字段 (10x10)

我已经开始管理“my field1x1”的 DragDrop。

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;
            

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

【问题讨论】:

您应该查看sender 参数。它将是拖动的控件,将其转换为 pbox 后,您可以访问其所有属性。我希望您在标签中有一个有用的名称或数据可以使用。您可以将所有事件映射到相同的代码,或者您可以创建一个 pbox 子类。要连接事件,您可以使用一两个循环。 谢谢!使用这些私有 void field1x1_DragDrop(object sender, DragEventArgs e) if (sender is PictureBox) ((PictureBox)sender).Image = (Bitmap)e.Data.GetData(DataFormats.Bitmap, true); 【参考方案1】:
private void field1x1_DragDrop(object sender, DragEventArgs e)
        
            if (sender is PictureBox)
            
                ((PictureBox)sender).Image = (Bitmap)e.Data.GetData(DataFormats.Bitmap, true);
            
            
        

这就是解决方案

【讨论】:

以上是关于Windows 窗体 C#(拖放 100 个对象)的主要内容,如果未能解决你的问题,请参考以下文章

在 Windows 窗体 c# 中绘制动态面板

在同一 Windows 窗体应用程序的实例之间拖放

在我的 .NET Windows 窗体上实现从 Chrome 拖放

wpf里面类似 SplitterPanel SplitterItem 功能的控件怎么实现啊,可以拖放和停靠在窗体上

如何在 Windows 窗体 C# 中伪造鼠标光标位置?

我可以为 C# Windows 应用程序拖放功能选择自定义图像吗?