/// <summary> /// 设置行距 /// </summary> /// <param name="ctl">控件</param> /// <param name="dyLineSpacing">间距,初始值至少大于(font.size+1)*30</param> public static void SetLineHeight(Control ctl, int dyLineSpacing) { PARAFORMAT2 fmt = new PARAFORMAT2(); fmt.cbSize = System.Runtime.InteropServices.Marshal.SizeOf(fmt); fmt.bLineSpacingRule = 4;// bLineSpacingRule; fmt.dyLineSpacing = dyLineSpacing; fmt.dwMask = PFM_LINESPACING; try { SendMessage(new System.Runtime.InteropServices.HandleRef(ctl, ctl.Handle), EM_SETPARAFORMAT, 0, ref fmt); } catch { } } public const int WM_USER = 0x0400; public const int EM_GETPARAFORMAT = WM_USER + 61; public const int EM_SETPARAFORMAT = WM_USER + 71; public const long MAX_TAB_STOPS = 32; public const uint PFM_LINESPACING = 0x00000100; [System.Runtime.InteropServices.StructLayout(System.Runtime.InteropServices.LayoutKind.Sequential)] public struct PARAFORMAT2 { public int cbSize; public uint dwMask; public short wNumbering; public short wReserved; public int dxStartIndent; public int dxRightIndent; public int dxOffset; public short wAlignment; public short cTabCount; [System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.ByValArray, SizeConst = 32)] public int[] rgxTabs; public int dySpaceBefore; public int dySpaceAfter; public int dyLineSpacing; public short sStyle; public byte bLineSpacingRule; public byte bOutlineLevel; public short wShadingWeight; public short wShadingStyle; public short wNumberingStart; public short wNumberingStyle; public short wNumberingTab; public short wBorderSpace; public short wBorderWidth; public short wBorders; } [System.Runtime.InteropServices.DllImport("user32", CharSet = System.Runtime.InteropServices.CharSet.Auto)] private static extern IntPtr SendMessage(System.Runtime.InteropServices.HandleRef hWnd, int msg, int wParam, ref PARAFORMAT2 lParam);