从.net winforms中的工具提示中删除一个控件

时间:2016-11-14 18:15:23

标签: c# .net winforms tooltip

在winform控件上设置工具提示就像在字典中添加一些东西:

ToolTip tt = new ToolTip();
tt.SetToolTip(control, "tooltip text");

将控件的文本设置为null将使应用程序不再显示控件上的工具提示:

tt.SetToolTip(control, null);

必须持有对控件的引用。我想确保删除(和处理)控件不会导致内存泄漏,所以我需要从工具提示中删除控件的引用。 设置为null是否删除引用?或者将控制其词典'空值?在后一种情况下如何删除这一个控件好? (我知道tt.RemoveAll()但我需要保留其他工具提示。)

1 个答案:

答案 0 :(得分:1)

您可以查看Tooltip.SetToolTip的源代码,
here for SetToolTipInternal
tools是一个Hashtable,传递null会调用tools.Remove(control)

        ...
        bool exists = false;
        bool empty = false;

        if (tools.ContainsKey(control)) {
            exists = true;
        }

        if (info == null || String.IsNullOrEmpty(info.Caption)) {
            empty = true;
        }

        if (exists && empty) {
            tools.Remove(control);
        }
        ...