ツールチップの文字列を指定した位置で折り返して表示するには、折り返す位置に改行文字を入れればOKです。改行文字を挿入する方法は、「文字列の途中で改行する」で紹介しています。
ToolTip1.SetToolTip(Button1, "このボタンは、" + vbCrLf + "Button1です")
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ピクセル以上になる時に文字列を折り返して表示するようにしています。
<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
[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);
}