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

时间:2015-04-24 05:28:55

标签: c# winforms tooltip

我在我的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);
        }
    }

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

1 个答案:

答案 0 :(得分:0)

要在表单中的所有组件上设置工具提示文字,例如button1等。我认为您应该使用以下内容:

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

那是因为ToolTip没有Text属性,而且它的设置与上面的例子类似。

另请参阅ToolTip ClassToolTip.SetToolTip Method以及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)应该返回什么。如果它只是翻译过的字符串,那么我的exmple中不需要(string)部分。

希望它有所帮助。

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