0

我有这两个类:

[Serializable]
public class Level
{
    public List<Entity> Entities { get; set; }

    public Level()
    {
        Entities = new List<Entity>();
    }
}

[Serializable]
public class Entity
{
    public string ID { get; set; }
    public string Class { get; set; }
    public string TextureName { get; set; }
    public int X { get; set; }
    public int Y { get; set; }
    public Box BoundingBox { get; set; }
}

我想创建一个小型关卡编辑器,我可以在其中将“实体”对象放置在“关卡”对象中。

所以,我想创建一个 Windows 窗体应用程序,并创建一个表示“级别”对象(只有一个实例)的“面板”控件,以及该面板上的“图片框”控件来表示“实体”对象。

当我单击“PictureBox”控件时,我想获取相应的“实体”对象以获取其属性(例如,我可以在“PropertyGrid”中显示)。

我该怎么做?

我尝试创建自定义控件(实现“Level”类的“Panel”和实现“Entity”类的“PictureBox”),但这感觉很混乱,因为第一个总是包含重复的数据(控件和对象分别)。

我还可以创建一个自定义的“PictureBox”控件,只保存一个“实体”对象的 ID,并创建搜索相应“实体”的方法。

我目前正在研究 model-view-controller 和 model-view-presenter 架构,只是为了了解如何解决问题(例如,通过 Id 进行查找),但我不需要严格分离现在的 UI 和数据。

任何帮助深表感谢。

4

0 回答 0