UltraToolTipManager : protected override void Dispose(bool disposing) { if (disposing) { if ((this.extenderPropertyTable != null) && (this.extenderPropertyTable.Count > 0)) { object[] array = new object[this.ExtenderPropertyTable.Count]; this.ExtenderPropertyTable.Keys.CopyTo(array, 0); foreach (Control control in array) { this.SetUltraToolTip(control, null); } } this.DisposeToolTip(); if (this.license != null) { this.license.Dispose(); this.license = null; } } base.Dispose(disposing); } public void SetUltraToolTip(Control control, UltraToolTipInfo toolTipInfo) { if (((IExtenderProvider) this).CanExtend(control)) { UltraToolTipInfo info = this.ExtenderPropertyTable[control] as UltraToolTipInfo; if (info != null) { info.SubObjectPropChanged -= this.SubObjectPropChangeHandler; this.UnhookExtenderComponent(control); this.ExtenderPropertyTable.Remove(control); this.DisposeToolTipIfOwned(control); } if (toolTipInfo != null) { toolTipInfo.SubObjectPropChanged += this.SubObjectPropChangeHandler; this.HookExtenderComponent(control); this.ExtenderPropertyTable.Add(control, toolTipInfo); } } } private void DisposeToolTipIfOwned(Control owner) { if ((this.tooltip != null) && (this.tooltip.OwningControl == owner)) { this.DisposeToolTip(); } } private void DisposeToolTip() { if (this.tooltip != null) { this.tooltip.Hide(); this.tooltip.Dispose(); this.tooltip = null; } }