richTextBox控件是一个active的控件,却没有一个明显的控制文字行高的属性,于是在网上google了一下,果然网上高手众多,找到了示例代码,一测试,真管用,呵呵。下边是我的测试代码:
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;
}
public
Form1()
{
InitializeComponent();
}
private void
MenuItemExit_Click(object sender, EventArgs
e)
{
Application.Exit();
}
private void
MenuItemOpen_Click(object sender, EventArgs
e)
{
if
(openFileDialog1.ShowDialog() ==
DialogResult.OK)
{
richTextBox1.LoadFile(openFileDialog1.FileName,
RichTextBoxStreamType.PlainText);
}
}
[DllImport("user32", CharSet =
CharSet.Auto)]
private static
extern IntPtr SendMessage(HandleRef hWnd, int msg, int wParam, ref PARAFORMAT2
lParam);
private void
Form1_Load(object sender, EventArgs
e)
{
PARAFORMAT2 fmt = new
PARAFORMAT2();
fmt.cbSize =
Marshal.SizeOf(fmt);
fmt.bLineSpacingRule =
4;
fmt.dyLineSpacing =
400;//可修改的行高数值。我使用的300,感觉较为合适,这个500有点宽了!
fmt.dwMask =
PFM_LINESPACING;
SendMessage(new HandleRef(this.richTextBox1, richTextBox1.Handle),
EM_SETPARAFORMAT, 4, ref fmt);
richTextBox1.BackColor = Color.FromArgb(231, 244,
254);
}
}
C#设置richtextBox行高的方法
本文介绍了如何在C#中控制richtextBox控件的行高。通过使用WM_USER、EM_GETPARAFORMAT和EM_SETPARAFORMAT等消息,结合PARAFORMAT2结构体,可以设置dyLineSpacing属性来调整行间距,从而实现行高的控制。示例代码展示了具体的实现过程。
1570

被折叠的 条评论
为什么被折叠?



