C# 试图找出如何允许用户使用DataGrid编辑集合

C# 试图找出如何允许用户使用DataGrid编辑集合,c#,collections,datagrid,ienumerable,C#,Collections,Datagrid,Ienumerable,我正在为3D建模程序开发一个插件,以帮助进行建筑设计。我有一个建筑类,它需要包含一组楼层 我的楼层类别具有诸如标高、高度、程序类型住宅、零售等属性和ID。每栋建筑都有一个楼层列表属性,它是该建筑包含的所有楼层的集合。建筑物的属性通常通过属性网格控件查看,我计划使用自定义UITypeEditor允许用户编辑FloorList集合 我正试图找出创建此FloorList集合类的最佳方法,以便尽可能轻松地创建UITypeEditor,并且我可以利用.NET控件中现有的任何集合编辑功能。对于编辑器,我想我

我正在为3D建模程序开发一个插件,以帮助进行建筑设计。我有一个建筑类,它需要包含一组楼层

我的楼层类别具有诸如标高、高度、程序类型住宅、零售等属性和ID。每栋建筑都有一个楼层列表属性,它是该建筑包含的所有楼层的集合。建筑物的属性通常通过属性网格控件查看,我计划使用自定义UITypeEditor允许用户编辑FloorList集合

我正试图找出创建此FloorList集合类的最佳方法,以便尽可能轻松地创建UITypeEditor,并且我可以利用.NET控件中现有的任何集合编辑功能。对于编辑器,我想我应该使用DataGrid视图来显示集合中的所有楼层,如下表所示

Height Elevation ProgramType ID 15' 70' Residential 23423 15' 55' Residential 42342 15' 40' Residential 98723 20' 20' Retail 23454 20' 0' Retail 98723 很抱歉问了这么长的问题,特别是没有任何示例代码。但是现在我还没有真正编写任何代码,因为我这一次是在计划我的工作,而不是直接跳进代码中

更新

我已经阅读了一些示例,看起来DataGrid将在IList中显示对象的属性。所以现在我认为实现一个列表更有意义,但是设置覆盖的方法来处理楼层高程的更改。如果我最终要将此列表绑定到DataGrid控件,那么将BindingList或IBindingList的FloorList集合作为基础会更好吗

更新


我又读了一些书,决定完全改写我的问题。新版本是。

来回答您的第一个问题:在您的业务层中,我将创建、添加、编辑、删除等方法来处理所有自定义逻辑,只需将其传递到您的模型中即可。然后通过DataGrid中的OnEditing、OnUpdate等事件调用这些方法


为了回答第二个问题,BindingList将为您提供一个内置的OnChange事件,而列表不会。如果这在Windows窗体应用程序中使用,BindingList将派上用场。但是在Web应用程序中使用该事件可能会有点麻烦。这取决于您希望如何在业务层中实现更新逻辑。

这将仅用作Windows窗体应用程序的一部分,而不是web应用程序。但是,如果我使用BindingList并希望控制添加、删除和移动项时发生的情况。。那么我应该实施IBindingListFloor,对吗?不是从BindingListFloorWait派生的,但我需要一个通用实现,因为我的集合将只包含楼层,但IBindingList不是通用的。但是像BindingList的add和remove这样的方法不是虚拟的,所以我可以重写它们。BindingList是一个通用实现。
FloorList.AddFloor(Floor floorToAdd);
FloorList.RemoveFloor(Floor floorToRemove);
FloorList.MoveFloor(Floor floorToMove,int newPosition);
FloorList.ChangeFloorHeight(Floor floor);
etc..etc...etc..