将工具提示添加到动态创建的标签页

时间:2014-08-29 10:51:38

标签: c# dynamic tooltip tabcontrol

我在尝试使用工具提示时遇到了困难。 我正在尝试向tabcontrol中的每个动态创建的选项卡添加带有不同文本的工具提示。 请务必注意,此选项卡是从包含tabcontrol所在的停靠表单的表单创建的。 这是一个带有停靠区域的主窗体,我在其中停靠了一个结果表单,其中包含一个 - 最初为空的 - tabcontrol。 当您启动应用程序时,此结果表单不存在,每当用户按下主表单的某些部分时,我也会动态创建它,每个部分都在结果表单tabcontrol中创建为新选项卡。

这是我生成标签的方式:

      generateResultForm();

      TabPage newtp = new TabPage("Nuevo paciente")
      _result.TabControl.TabPages.Add(newtp);

      newtp.Name = setTabName("np");

现在,我已经尝试在结果表单中添加工具提示,然后尝试首先通过添加_result.ResultsTooltip.SetToolTip(newtp, "Creación de un nuevo paciente.");之类的内容来生成工具提示,但这不起作用。然后,因为一旦创建了选项卡,它就会被选中,我试图通过tabcontrol中selectedIndexchange事件中的WorkareaTooltip.SetToolTip(tabControl.SelectedTab, "Cosas");之类的东西在结果类中添加它。 我认为这不是一个很好的解决方案,但我不知道还有什么可以尝试。

当然tabcontrol的ShowToolTips属性设置为true。

如果有人能帮助我那会很棒。

感谢阅读,如果有任何语言错误,请抱歉:)

// EDITED

这是我实际使用的代码(并且不起作用)

TabPage newtp = new TabPage("Nuevo paciente");
_workareaform.TabControl.TabPages.Add(newtp);
newtp.Name = "np";
var tooltip = new ToolTip();
tooltip.SetToolTip(newtp, "Creación de un nuevo paciente.");

现在,它不起作用,可能是因为整个配置。 为了清楚起见,此选项卡位于TabControl中,该控件位于另一个Form中停靠在dockContainer中的Form中。 这是一张图片。

http://i.imgur.com/fVz6e06.png

如您所见,根本没有工具提示。

2 个答案:

答案 0 :(得分:0)

如果您正在使用其他表单,则需要引用另一种表单TabControl

在此示例中,我从Form1创建了一个TabControl实例(其中包含Form2),然后添加了页面和工具提示。

private void Form2_Load(object sender, EventArgs e)
{
    //instantiate another form
    var f1 = new Form1();

    //find tabcontrol on new form
    var tc = (TabControl) f1.Controls["tabControl1"];

    //create page
    TabPage newtp = new TabPage("Nuevo paciente");
    newtp.Name = "Paciente1";
    tc.TabPages.Add(newtp);

    //add tooltip
    var tt1 = new ToolTip();
    tt1.SetToolTip(newtp, "paciente 1 tooltip");


    //show other form
    f1.Show();
}

enter image description here

答案 1 :(得分:0)

您是否尝试过设置ToolTipText属性,如下所示?它对我有用。

_result.TabControl.ShowToolTips = true;
TabPage newtp = new TabPage("Nuevo paciente");
_result.TabControl.TabPages.Add(newtp);
newtp.ToolTipText = "this is tooltip";