如何在工具提示中自动换行

Avr*_*ram 10 c# winforms

如何自动换行需要在工具提示中显示的文本

Qua*_*ter 7

看起来它不是直接支持的:

如何自动换行显示的工具提示?

这是使用Reflection实现此目的的方法.

[ 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 );
Run Code Online (Sandbox Code Playgroud)

瑞德贡

  • 理想情况下,幻数0x418应该定义为与相应头文件Commctrl.h中使用的名称相同的常量:"private const uint TTM_SETMAXTIPWIDTH = 0x418" - 这使得谷歌更容易获取更多信息. (3认同)

Avr*_*ram 5

另一种方法是创建一个自动包装的正则表达式.

WrappedMessage := RegExReplace(LongMessage,"(.{50}\s)","$1`n")
Run Code Online (Sandbox Code Playgroud)

链接

  • 这看起来像PHP代码或其他东西.这是c#版本:Regex rgx = new Regex("(.{50} \\ s)"); string WrappedMessage = rgx.Replace(longMessage,"$ 1 \n"); (3认同)