设置RichTextbox行间距

RichTextbox虽然内置的功能已经很强大了,但是还是有些功能没有提供,就比如“行间距”,不知道其内置的功能是否可以实现,这里在网上找到一个使用win32来设置的

 

 

View Code
 1  public   const   int  WM_USER  =   0x0400 ;
 2           public   const   int  EM_GETPARAFORMAT  =  WM_USER  +   61 ;
 3           public   const   int  EM_SETPARAFORMAT  =  WM_USER  +   71 ;
 4           public   const   long  MAX_TAB_STOPS  =   32 ;
 5           public   const   uint  PFM_LINESPACING  =   0x00000100 ;
 6          [StructLayout(LayoutKind.Sequential)]
 7           private   struct  PARAFORMAT2
 8          {
 9               public   int  cbSize;
10               public   uint  dwMask;
11               public   short  wNumbering;
12               public   short  wReserved;
13               public   int  dxStartIndent;
14               public   int  dxRightIndent;
15               public   int  dxOffset;
16               public   short  wAlignment;
17               public   short  cTabCount;
18              [MarshalAs(UnmanagedType.ByValArray, SizeConst  =   32 )]
19               public   int [] rgxTabs;
20               public   int  dySpaceBefore;
21               public   int  dySpaceAfter;
22               public   int  dyLineSpacing;
23               public   short  sStyle;
24               public   byte  bLineSpacingRule;
25               public   byte  bOutlineLevel;
26               public   short  wShadingWeight;
27               public   short  wShadingStyle;
28               public   short  wNumberingStart;
29               public   short  wNumberingStyle;
30               public   short  wNumberingTab;
31               public   short  wBorderSpace;
32               public   short  wBorderWidth;
33               public   short  wBorders;
34          }
35 
36          [DllImport( " user32 " , CharSet  =  CharSet.Auto)]
37           private   static   extern  IntPtr SendMessage(HandleRef hWnd,  int  msg,  int  wParam,  ref  PARAFORMAT2 lParam);
38 
39           ///   <summary>
40           ///  设置行距
41           ///   </summary>
42           ///   <param name="ctl"> 控件 </param>
43           ///   <param name="dyLineSpacing"> 间距 </param>
44           public   static   void  SetLineSpace(Control ctl,  int  dyLineSpacing)
45          {
46              PARAFORMAT2 fmt  =   new  PARAFORMAT2();
47              fmt.cbSize  =  Marshal.SizeOf(fmt);
48              fmt.bLineSpacingRule  =   4 ; //  bLineSpacingRule;
49              fmt.dyLineSpacing  =  dyLineSpacing;
50              fmt.dwMask  =  PFM_LINESPACING;
51               try
52              {
53                  SendMessage( new  HandleRef(ctl, ctl.Handle), EM_SETPARAFORMAT,  0 ref  fmt);
54              }
55               catch
56              {
57 
58              }
59          }

 

然后可以在Form_Load事件里面调用,代码如下:

       

SetLineSpace(txt_content,  300 );

 

第一个参数是一个Control类型的,第二个就是行间距了,哈哈,很简单吧。

你可能感兴趣的:(text)