Как wordwrap текст, который должен отображаться в ToolTip
Как wordwrap текст в подсказке
Ответ 1
Похоже, что он не поддерживается напрямую:
Как я могу сложить всплывающую подсказку, которая отображается?
Вот метод, использующий Reflection to достичь этого.
[ DllImport( "user32.dll" ) ] private extern static int SendMessage( IntPtr hwnd, uint msg, int wParam, int lParam); object o = typeof( ToolTip ).InvokeMember( "Handle", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetProperty, null, myToolTip, null ); IntPtr hwnd = (IntPtr) o; SendMessage( hwnd, 0x0418, 0, 300 );
Ретт Гун
Ответ 2
Другой способ - создать регулярное выражение, которое автоматически обертывается.
WrappedMessage := RegExReplace(LongMessage,"(.{50}\s)","$1`n")
Ответ 3
Это часть, которую я написал недавно, я знаю, что она не самая лучшая, но она работает. Вам необходимо расширить ToolTip Control следующим образом:
using System;
using System.Collections.Generic;
using System.Windows.Forms;
public class CToolTip : ToolTip
{
protected Int32 LengthWrap { get; private set; }
protected Control Parent { get; private set; }
public CToolTip(Control parent, int length)
: base()
{
this.Parent = parent;
this.LengthWrap = length;
}
public String finalText = "";
public void Text(string text)
{
var tText = text.Split(' ');
string rText = "";
for (int i = 0; i < tText.Length; i++)
{
if (rText.Length < LengthWrap)
{
rText += tText[i] + " ";
}
else
{
finalText += rText + "\n";
rText = tText[i] + " ";
}
if (tText.Length == i+1)
{
finalText += rText;
}
}
}
base.SetToolTip(Parent, finalText);
}
}
И вы будете использовать его как:
CToolTip info = new CToolTip(Control,LengthWrap);
info.Text("It looks like it isn't supported directly. There is a workaround at
http://windowsclient.net/blogs/faqs/archive/2006/05/26/how-do-i-word-wrap-the-
tooltip-that- is-displayed.aspx:");
Ответ 4
Для WPF вы можете использовать свойство TextWrapping:
<ToolTip>
<TextBlock Width="200" TextWrapping="Wrap" Text="Some text" />
</ToolTip>
Ответ 5
Вы можете установить размер всплывающей подсказки с помощью свойства e.ToolTipSize
, это заставит перенос слов:
public class CustomToolTip : ToolTip
{
public CustomToolTip () : base()
{
this.Popup += new PopupEventHandler(this.OnPopup);
}
private void OnPopup(object sender, PopupEventArgs e)
{
// Set custom size of the tooltip
e.ToolTipSize = new Size(200, 100);
}
}