自定义工具提示无法正常工作

时间:2017-10-24 13:21:18

标签: c# tooltip

在C#中的Windows窗体应用程序中,我有许多TextBox个控件,所有这些控件都附加了相同的ToolTip控件/消息。没有任何自定义,ToolTip工作得很好。

enter image description here

现在,我使用Change winform ToolTip backcolor中选为最佳答案的代码段,将BackColor添加到ToolTip个气球中。这对于向BackColor气球添加ToolTip非常有用,但它以某种方式删除了字符串消息中的所有Environment.NewLine。但它似乎显示了相同大小的气球。

enter image description here

有人可以告诉我为什么会这样,以及如何解决这个问题?

private ToolTip _tt = new ToolTip();
private string _ttipText;
private void ToolTipCustomization(){
    string nl = Environment.NewLine;
    /* This text is not shown properly when BackColor is added */
    _ttipText = "The value must be: " + nl +
                      "1, Numeric " + nl +
                      "2, Between 0 and 1000" + nl +
                      "3, A multiple of 10";
    _tt.OwnerDraw = true;
    _tt.BackColor = Color.LightBlue;
    _tt.Draw += new DrawToolTipEventHandler(TT_Draw);
}

private void TT_Draw(object sender, DrawToolTipEventArgs e){
    e.DrawBackground();
    e.DrawBorder();
    e.DrawText();
}

//Adding TextBox controls programmatically
private Textbox[] tbx = new TextBox[20];
private void CreateTextBox(){
    for(int i=0; i<20; i++){
        tbx[i] = new TextBox();
        /* More TextBox properties for design (Omit) */
        _tt.SetToolTip(tbx[i], _ttipText);  //Set ToolTip text to tbx here
        this.Controls.Add(tbx[i]);
    }
}

我尝试订阅PopupEventHandler,其中我放大了气球尺寸,但它没有解决我的问题。

1 个答案:

答案 0 :(得分:1)

最后,由于 Hans Passant 的建议,我能够找到自己问题的解决方案。

就像向TextFormatFlags添加e.DrawText参数一样简单,如下所示:

private void TT_Draw(object sender, DrawToolTipEventArgs e){
    e.DrawBackground();
    e.DrawBorder();
    e.DrawText(TextFormatFlags.VerticalCenter); /* here */
}

enter image description here

现在正确显示文字。谢谢!