如何通过代码访问Form的ToolTip组件

时间:2017-02-08 07:54:59

标签: c# forms winforms tooltip

我正在努力解决一件非常棘手的事情。我知道必须有解决方案,但我需要你的帮助。

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

现在的诀窍:如果有一个ToolTip组件添加到表单,我也想访问控件工具提示,但我找不到通过代码访问ToolTip组件的方法。 任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:2)

工具提示不会继承Component,只会继承Form.Controls。因此它不包含在Form.components.Components - 集合中。您可以遍历Nequeo.Reflection.AppDomianHost host = new Nequeo.Reflection.AppDomianHost(@"D:\Development\Version2015\Test\LoadUnload\ConsoleLoadUnload\bin\Debug"); int ret = host.Instance.ExecuteMethod<int>("ConsoleLoadUnload", "ConsoleLoadUnload.Test", "EntryPoint", new object[] { (int)6, (int)6 }); host.Unload(); textBox1.Text = ret.ToString(); 以获取工具提示。

答案 1 :(得分:0)

我突然发现了一个解决方案。 这是:

    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);

            }
        }

    }

感谢您的帮助

答案 2 :(得分:0)

  ToolTip1.GetToolTip(your_control)