首 页最新软件下载排行文章资讯投稿发布下载专题
维维下载站
您的位置:首页编程开发网络编程编程其它 → C#给RichTextbox控件的文字段落设置行间距例子代码分享

C#给RichTextbox控件的文字段落设置行间距例子代码分享

来源:维维整理 发布时间:2017-8-16 16:15:21 人气:

今天给大家带来的C#给RichTextbox控件的文字段落设置行间距例子代码是小编为大家整理放出的从一个完整的C#源码中整理出来的,需要添加其它代码才可以使用,或者你也能够单独摘出来代码片段使用,,赶紧来详细了解一下吧:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace HJJ
{
    public partial class Form1 : Form
    {
        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;
        [StructLayout(LayoutKind.Sequential)]
        private 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;
            [MarshalAs(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;
        }
        [DllImport("user32", CharSet = CharSet.Auto)]
        private static extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, ref PARAFORMAT2 lParam);
        /// <summary>
        /// 设置行距
        /// </summary>
        /// <param name="ctl">控件</param>
        /// <param name="dyLineSpacing">间距</param>
        public static void SetLineSpace(Control ctl, int dyLineSpacing)
        {
            PARAFORMAT2 fmt = new PARAFORMAT2();
            fmt.cbSize = Marshal.SizeOf(fmt);
            fmt.bLineSpacingRule = 5;// bLineSpacingRule;
            fmt.dyLineSpacing = dyLineSpacing;
            fmt.dwMask = PFM_LINESPACING;
            try
            {
                SendMessage(new HandleRef(ctl, ctl.Handle), EM_SETPARAFORMAT, 0, ref fmt);
            }
            catch
            {
            }
        }
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            richTextBox1.Text = @"12121212
12121212
12121212
121212121
1212121212
发生地方哈
圣诞节福
利阿萨
德快捷回复
发生地方环境
阿萨德发挥afasd
阿斯蒂芬快结束了的f
sfadfsdfsdf
asdfsadfasdf
asdfasdfds
开源爱好者
12121212
12121212
12121212
12121212
12121212
121212";
            AdjustLineSpacing();
        }
        private void button2_Click(object sender, EventArgs e)
        {
            _value += _d;
            AdjustLineSpacing();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            _value -= _d;
            AdjustLineSpacing();
        }
        private void AdjustLineSpacing()
        {
            int index = richTextBox1.SelectionStart;
            richTextBox1.SelectAll();
            SetLineSpace(richTextBox1, (int)_value);
            Console.WriteLine(_value + "");
            //SetLineSpace(richTextBox1, (int)(richTextBox1.Font.Height * _value * 110 / 7 + 1));
            richTextBox1.SelectionStart = index;
        }
        private decimal _value = 20;
        private decimal _d = new decimal(1);
    }
}
相关下载
栏目导航
本类热门阅览