2017-10-24 14 views
0

C#のWindowsフォームアプリケーションでは、多くのTextBoxコントロールがあります。これらのコントロールには、すべて同じコントロール/メッセージが添付されています。カスタマイズすることなく、ToolTipは完全に動作していました。カスタマイズされたツールヒントが正しく機能していない

enter image description here

今、私はChange winform ToolTip backcolorで最高の答えとして選択されたコードスニペットを使用してToolTip風船にBackColorを追加しました。これはToolTipバルーンにBackColorを追加するのには効果的ですが、文字列メッセージの中で何とかすべて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

デフォルトのe.DrawText()実装が気に入らないだけです。 TextFormatFlags.SingleLineを使用します。見た目を良くするためにあなた自身で書く必要があります。 –

答えて

1

最後に、ハンス・パッサントからのアドバイスのおかげで、私自身の疑問に対する解決策を見つけることができました。

それは次のようにe.DrawTextTextFormatFlagsパラメータを追加するのと同じくらい簡単だった:

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

enter image description here

今、それが適切にテキストを示しています。ありがとうございました!

関連する問題