0

我有一个动态数量的 Contols,我需要在运行时为一些 Control 实例(Label、Button、CheckBox、....)生成一个唯一标识符。
为此,我有一个浏览我的主体 UserControl 的函数,并且对于每个“有效”的 Control 实例将生成一个带有函数的标识符RuntimeHelpers.GetHashCode(<myinstance>);。因此,我获得了一个ID,并将其保存到由以下内容组成的 Hashtable 中:

键:ID - 值:字符串

问题是,当实例将被销毁时,我需要删除在 Hashtable 中添加的键,否则 Hashtable 只会增长,因为它保留了已处置的对象的 Id。
我不确定我所做的是否是解决此类问题的最佳方法,但我认为对于我的具体情况来说是一个很好的解决方案;所以我想知道的是是否存在一种更有效的方法,或者是否存在一种知道何时释放 Control 实例的方法(不覆盖每个 Control 的 Dispose 方法)。

4

1 回答 1

1

Disposed调用控件的 Dispose 函数时会触发Control 类中的一个事件。您可以为您创建的每个控件处理此事件,以便在释放控件时收到通知,然后从 Hashtable 中删除相应的 ID。

于 2013-09-11T20:19:08.453 回答