DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

ツールチップの文字列を折り返して表示する

指定した位置で折り返す

ツールチップの文字列を指定した位置で折り返して表示するには、折り返す位置に改行文字を入れればOKです。改行文字を挿入する方法は、「文字列の途中で改行する」で紹介しています。

VB.NET
コードを隠すコードを選択
ToolTip1.SetToolTip(Button1, "このボタンは、" + vbCrLf + "Button1です")
C#
コードを隠すコードを選択
ToolTip1.SetToolTip(Button1, "このボタンは、\nButton1です");
補足:Visual Studio 2005からは、フォームデザイナのプロパティウィンドウでToolTipの文字列を入力する時に改行もできます。

文字列が長い時に自動的に折り返す

このように自分で改行文字を挿入するのではなく、ツールチップの文字列が長い時に自動的に折り返して表示されるようにする方法は、「How do I word-wrap the Tooltip that is displayed? - Windows Forms FAQs(リンク切れのため、Internet Archiveへのリンク)」で紹介されています。

以下の例では、ToolTip1の横幅が100ピクセル以上になる時に文字列を折り返して表示するようにしています。

VB.NET
コードを隠すコードを選択
<System.Runtime.InteropServices.DllImport("user32.dll")> _
Private Shared Function SendMessage(ByVal hwnd As IntPtr, _
    ByVal msg As UInteger, ByVal wParam As Integer, ByVal lParam As Integer) _
    As Integer
End Function

'フォームのLoadイベントハンドラ
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) _
        Handles MyBase.Load
    'ToolTipのHandleプロパティの値を取得する 
    Dim o As Object = GetType(ToolTip).InvokeMember("Handle", _
        System.Reflection.BindingFlags.NonPublic Or _
        System.Reflection.BindingFlags.Instance Or _
        System.Reflection.BindingFlags.GetProperty, _
        Nothing, ToolTip1, Nothing)
    Dim hwnd As IntPtr = DirectCast(o, IntPtr)

    SendMessage(hwnd, &H418, 0, 100)
End Sub
C#
コードを隠すコードを選択
[System.Runtime.InteropServices.DllImport("user32.dll")]
private extern static int SendMessage(IntPtr hwnd,
    uint msg, int wParam, int lParam);

//フォームのLoadイベントハンドラ
private void Form1_Load(object sender, EventArgs e)
{
    //ToolTipのHandleプロパティの値を取得する
    object o = typeof(ToolTip).InvokeMember("Handle",
        System.Reflection.BindingFlags.NonPublic |
        System.Reflection.BindingFlags.Instance |
        System.Reflection.BindingFlags.GetProperty,
        null, ToolTip1, null);
    IntPtr hwnd = (IntPtr)o;

    SendMessage(hwnd, 0x0418, 0, 100);
}
  • 履歴:
  • 2016/5/30 リンク切れを修正。

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • イベントハンドラの意味が分からない、C#のコードをそのまま書いても動かないという方は、こちらをご覧ください。
  • .NET Tipsをご利用いただく際は、注意事項をお守りください。