2012-04-24 33 views
1

我在C#中的新手,特别是(当然!)事件......添加事件改变的项目列表

在我的代码中,我们从事件得到一个元素T,并希望将其添加到一个列表(List)。

因为T签订的“OnPropertyChanging”,它改变无处不在我的代码,因此,所有在列表中的成员都是相同的。那么我应该如何实现在List中保存所有过去的T值呢?

在此先感谢。

EDIT(试图更好地解释它):

我有一个通过DDE,我用它来进行实时计算接收数据的应用程序。到现在为止,没有问题。我必须使用以前的数据时才会出现问题,因为我无法将它们保存在列表中。

我创造我的第一个数据读取列表和值添加到它:

ticks = new List<Tick> { tick }; // where tick comes via DDE 

第二雷丁后,我想用列表的最后一个值,并将它与最新:

Tick prevTick = ticks.Last(); 
Tick currTick = tick;    // this tick is different from the former 

但是我确认prevTick等于currTick。显然,在我有机会将其传递给prevTick之前,“PropertyChange”会在程序的所有实例中更改滴答,修改滴答的内容。

+1

对不起你说你想保存当前的状态被颠倒了。它不清楚你在问什么。 – 2012-04-24 23:01:24

+0

对不起,如果我不清楚。是。我想在T被更改(反转)之前保存T的过去值。问题是,功能A在将它保存在我管理列表的函数B中之前对其进行了更改。我想保存以前的对话的价值。 – 2012-04-25 02:31:52

回答

0

假设Tick是一个类,prevTickcurrTick最有可能相同的情况下,和底层代码提供Tick实例只是更新由该实例存储的值。这可以解释你以为PropertyChange改变全部打勾实例 - 它实际上是只有一个实例

我会创造我自己的类与每一块Tick包含数据的属性,并填充这个类的一个新实例您的历史清单。如果你只是需要从每个Tick一个数字,然后你可以只是有一个List<int>来存储您的历史。

+0

谢谢你,davisoa。现在它应该像现在这样工作。 – 2012-04-25 19:38:30