zoukankan      html  css  js  c++  java
  • 设置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, 0ref fmt);
    54             }
    55             catch
    56             {
    57 
    58             }
    59         }

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

           

    SetLineSpace(txt_content, 300);
    第一个参数是一个Control类型的,第二个就是行间距了,哈哈,很简单吧。
  • 相关阅读:
    工厂方法模式(2)
    单例模式(1)
    数组中任意位置添加数组
    六中设计模式中的原则总结
    开闭原则(设计模式6)
    迪米特法则(设计模式5)
    接口隔离原则(设计模式4)
    依赖倒置原则(设计模式3)
    里氏替换原则(设计模式原则2)
    相似图片搜索的原理(二) (转载)
  • 原文地址:https://www.cnblogs.com/liubiaocai/p/2159869.html
Copyright © 2011-2022 走看看