【问题标题】:How to get access to the ToolTip component of a Form by code如何通过代码访问 Form 的 ToolTip 组件
【发布时间】:2017-02-08 07:54:58
【问题描述】:

我正在为一件非常棘手的事情而苦苦挣扎。我知道一定有解决办法,但我需要你的帮助。

我正在研究表单翻译(多语言)类 (dll)。您可以实例化类并设置语言。然后,该类枚举所有 Form 控件并用所有字符串编写一个 XML 文件。到目前为止,一切都很好。

现在的窍门:如果表单中添加了 ToolTip 组件,我也想访问控件 ToolTips,但我没有找到通过代码访问 ToolTip 组件的方法。 任何帮助表示赞赏。

【问题讨论】:

    标签: c# forms winforms tooltip


    【解决方案1】:

    工具提示不继承Control,而仅继承Component。因此它不包含在Form.Controls-Collection 中。您可以遍历 Form.components.Components 以获取工具提示。

    【讨论】:

    • 或通过 LINQ 获取所有这些:List<ToolTip> ToolTipList = this.components.Components.OfType<ToolTip>().ToList();
    • 你好Mong Zhu,如何在表单设计者之外访问“组件”?
    【解决方案2】:

    我突然找到了解决办法。 这里是:

        private static void GetAllToolTips(Form frm)
        {
    
            Type typeForm = frm.GetType();
            FieldInfo fieldInfo = typeForm.GetField("components", BindingFlags.Instance | BindingFlags.NonPublic);
            IContainer parent = (IContainer)fieldInfo.GetValue(frm);
            List<ToolTip> ToolTipList = parent.Components.OfType<ToolTip>().ToList();
    
            if (ToolTipList.Count > 0)
            {
                ToolTip tt = ToolTipList[0];
                foreach (Control c in frm.Controls)
                {
                    string text = tt.GetToolTip(c);
    
                }
            }
    
        }
    

    感谢您的帮助

    【讨论】:

      【解决方案3】:
        ToolTip1.GetToolTip(your_control)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-01-10
        • 2021-10-27
        • 1970-01-01
        • 1970-01-01
        • 2022-11-29
        • 1970-01-01
        • 2020-02-24
        • 2010-11-26
        相关资源
        最近更新 更多