Winforms ToolTip 获取和更改所有分配的工具提示

Winforms ToolTip get and change all assigned tooltips

我正在循环我的 WinForms 控件并将它们的 Text 和 ToolTipText 提供给我的翻译服务进行翻译。 示例:

        foreach (ToolStripItem item in toolStrip.Items)
        {
            if (item is ToolStripMenuItem)
            {
                item.ToolTipText = Translate(item.ToolTipText);
                item.Text = Translate(item.Text);
            }
        }

但是,我无法访问使用 WinForms ToolTip 控件设置的工具提示。

我知道我可以循环遍历组件。我可以获取和设置他们的工具提示吗?

    protected void TranslateToolTip(ToolTip toolTip)
    {
        foreach (var component in toolTip.Container.Components)
        { 
            // Doesn't work. No ToolTipText property
            component.ToolTipText = Translate(component.ToolTipText);
        }
    }

我可以直接从控件访问工具提示文本吗?

在表单中的所有组件上设置工具提示文本,如 button1 等。我认为你应该使用这样的东西:

foreach (var control in this.Controls) {
            ToolTip1.SetToolTip(this.control, "Your text");
        }

那是因为工具提示没有文本 属性,它的设置与上面的示例相同。

另见 ToolTip Class and ToolTip.SetToolTip Method and ToolTip.GetToolTip Method

或者您可以尝试类似的方法,但不确定这是否有效:

protected void TranslateToolTip(ToolTip toolTip)
{
    foreach (var component in toolTip.Container.Components)
    { 
        // Doesn't work. No ToolTipText property
        // component.ToolTipText = Translate(component.ToolTipText);
           toolTip.SetToolTip(component , (string)Translate(toolTip.GetToolTip(component));
    }
}

我不知道 Translate(component.ToolTipText) 应该是什么 return。如果它只是翻译后的字符串,那么我的示例中就不需要 (string) 部分。

希望对您有所帮助。

编辑:修复了第二个示例以显示如何从特定控件设置和获取工具提示文本。