我有一種情況,我需要知道什麼時候項目是要在集合中添加/刪除/修改。創建一個像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