我有动态数量的Contols,我需要在运行时为某些控件实例(Label,Button,CheckBox,....)生成一个UNIQUE标识符。
为此,我有一个浏览我的主要UserControl的函数,并且对于每个“有效”控件实例将生成一个带有函数RuntimeHelpers.GetHashCode(<myinstance>);
的标识符。所以我获得了 ID ,并将其保存到由以下内容组成的Hashtable中:
键: ID - 值:字符串。
问题是当实例被销毁时,我需要删除Hashtable中添加的密钥,否则Hashtable只会增长,因为它会保留已经处理过的Ids对象。
我不确定我所做的是解决这类问题的最佳方法,但我认为对于我的具体情况来说这是一个很好的解决方案;所以我想知道的是,如果存在一个更有效的方法,或者存在一种方法来知道何时将要处理一个Control实例(不覆盖每个Control的Dispose方法)。
答案 0 :(得分:1)
Control类中有一个名为Disposed
的事件在调用控件的Dispose函数时被触发。您可以为您创建的每个控件处理此事件,以便在处理控件时收到通知,然后从Hashtable中删除相应的ID。