2010-08-18 56 views
2

我有一个包含控件和相关工具提示的表单。我正在实施一个帮助按钮,它应该一次显示所有的工具提示。如何显示已经与控件关联的所有工具提示

我想以某种方式实现它是这样的:

private void btnHelp_Click(object sender, EventArgs e) 
{ 
    System.Windows.Forms.Control.All.Show.Their.Tooltips(); 
} 

无法找到一个简单的方法来做到这一点:-)

我想用ToolTip.Show(),但它的不仅需要控件,还需要工具提示文本 - 但我不想再次编写它(因为必要的工具提示已分配到控件的属性中)。

UPD。 我开始使用此功能实现它:

public void ShowControlsTooltip(System.Windows.Forms.Control c) 
    { 
     ttsToolTips.Show(ttsToolTips.GetToolTip(c), c, c.Location.X, c.Location.Y); 
    } 

但我不能让它显示多个工具提示在同一时间。

UPD2。 现在我有这种代码,但所有的工具提示仍然闪烁并消失。

public void ShowControlsTooltip(System.Windows.Forms.Control c) 
{ 
    ToolTip t = new ToolTip(); 
    //t = ttsToolTips; 
    t.Show(ttsToolTips.GetToolTip(c), c, c.Location.X, c.Location.Y, 1000); 
} 

private void btnHelp_Click(object sender, EventArgs e) 
{ 
    foreach (Control c in this.Controls) 
    { 
     try 
     { 
      ShowControlsTooltip(c); 
     } 
     catch 
     { 

     } 
    } 
} 

与ttsToolTips的事情是,我把所有的工具提示协会已经存在。

UPD3。它看起来像作品。但坐标不准确。

现在最大的问题是 - 如何一次删除所有这些工具提示?

回答

1
foreach(Control c in Form.Controls) 
{ 
    string s = Tooltip.GetTooltip(c); 
    c.ShowTooltip(s,this); 
} 
+0

好点 - 我刚刚尝试过,但所有工具提示都会闪烁一次,并因某些原因而消失。它看起来不是一次只能有多一个呢?! – Halst 2010-08-18 11:53:26

+0

当你点击alt键时,你希望这看起来类似于Office,对吗? – XstreamINsanity 2010-08-18 11:55:01

+0

尝试为每个控件创建不同的Tooltip对象。 – 2010-08-18 11:55:03