【发布时间】:2017-02-08 07:54:58
【问题描述】:
我正在为一件非常棘手的事情而苦苦挣扎。我知道一定有解决办法,但我需要你的帮助。
我正在研究表单翻译(多语言)类 (dll)。您可以实例化类并设置语言。然后,该类枚举所有 Form 控件并用所有字符串编写一个 XML 文件。到目前为止,一切都很好。
现在的窍门:如果表单中添加了 ToolTip 组件,我也想访问控件 ToolTips,但我没有找到通过代码访问 ToolTip 组件的方法。 任何帮助表示赞赏。
【问题讨论】:
我正在为一件非常棘手的事情而苦苦挣扎。我知道一定有解决办法,但我需要你的帮助。
我正在研究表单翻译(多语言)类 (dll)。您可以实例化类并设置语言。然后,该类枚举所有 Form 控件并用所有字符串编写一个 XML 文件。到目前为止,一切都很好。
现在的窍门:如果表单中添加了 ToolTip 组件,我也想访问控件 ToolTips,但我没有找到通过代码访问 ToolTip 组件的方法。 任何帮助表示赞赏。
【问题讨论】:
工具提示不继承Control,而仅继承Component。因此它不包含在Form.Controls-Collection 中。您可以遍历 Form.components.Components 以获取工具提示。
【讨论】:
List<ToolTip> ToolTipList = this.components.Components.OfType<ToolTip>().ToList();
我突然找到了解决办法。 这里是:
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);
}
}
}
感谢您的帮助
【讨论】:
ToolTip1.GetToolTip(your_control)
【讨论】: