我正在使用从RichTextBox控件派生的控件生成打印报告。我有几段用.SelectionIndent
和.SelectionRightIndent
属性缩进,但我也想让它们完全对齐(微妙的子字符间距,就像Microsoft Word一样)。
.SelectionAlignment
属性可用,但只提供Left
,Center
和Right
对齐。
有没有办法在RichTextBox中指定完整对齐?如果有必要,我愿意深入研究底层的RTF协议(如果协议本身支持这个功能),但是我不愿意创建格式化为完全对齐的文本位图以嵌入到文档中。
对于它的价值,我使用msftedit.dll中的RICHEDIT50W,并且不能依赖安装了任何版本Word的客户端。
答案 0 :(得分:3)
您可以扩展RichTextBox控件,如this&将PARAFORMAT2 structure's段落对齐成员wAlignment
设置为
PFA_JUSTIFY
。要使用此成员set the PFM_ALIGNMENT flag in the dwMask member
。
NB: RichEdit 2.0 段落是合理的。早于RichEdit 3.0的丰富编辑控件显示与左边距对齐的文本。
PARAFORMAT2 fmt = new PARAFORMAT2();
fmt.cbSize = Marshal.SizeOf( fmt );
fmt.dwMask = PFM_ALIGNMENT;
fmt.wAlignment = ( short )value; /// PFA_JUSTIFY here.
// Set the alignment.
SendMessage( new HandleRef( this, Handle ),
EM_SETPARAFORMAT,
SCF_SELECTION, ref fmt );
[你必须编写WIN32 apis的相应P / Invokes,如示例链接所示]