我有一种情况,我需要知道什么时候项目是要在集合中添加/删除/修改。创建一个像BindingList一样的自定义集合,它与ListBox一起创建一个ListChanging事件
我试图通过在将触发这些事件的类中继承BindingList,但“添加”事件不起作用。我发现它工作的唯一方法是通过重写EndNew()方法,但是我没有找到一种方法来获取哪个对象将被添加到这个方法(如果有人有这个解决方案,也没关系!)。因此构建了一个全新的类,该类继承自BindingList的相同接口/类并实现了一切(但我没有继承,但ICancelAddNew)。
我通过数据绑定将它绑定到我的列表框,并发现没有任何工作(listchanged事件既不listchanging事件)。如何模拟列表框上的BindingList行为?
任何建议大力赞赏,我没有的解决方法,任何其他的想法
编辑1:
这是我收集:http://pastie.org/1978601 这是我收集绑定到ListBox
SpellCasterManager.CurrentProfile.ButtonsMacro.ListChanged += new ListChangedEventHandler(ButtonsMacro_ListChanged);
SpellCasterManager.CurrentProfile.ButtonsMacro.ListChanging += new Expand.ComponentModel.ListChangingEventHandler(ButtonsMacro_ListChanging);
gumpButton.DataBindings.Add("Value", SpellCasterManager.CurrentProfile.ButtonsMacro, "GumpIndex", false, DataSourceUpdateMode.OnPropertyChanged);
实际上,在订阅事件下,只有一个MessageBox.Show(“bla”);
也许你应该张贴的东西更多关于“为什么”要知道,当一个项目将被添加/删除/修改?因为如果您想在此之前阻止某些UI操作,则可以设置某种事件或绑定来禁用添加/删除/修改操作,同时某些活动正在处理中。 – 2011-05-31 09:32:11
我想要做的是将每个属性的“上一个值”存储到列表中,因为我想将它用于类似于Ctrl + Z的东西 – 2011-06-01 04:16:57
因此,明确地说,您想要撤消/重做功能为您的应用程序?那么你可能不得不改变很多东西,因为属性和集合中的每一次更改都需要存储为可以应用或删除的工作单元。有一些codeplex项目提供了一些框架来实现Undo/Redo。 – 2011-06-01 06:05:53