0

我目前正在使用从 RichTextBox 控件派生的控件生成用于打印的报告。我有几个段落缩进了.SelectionIndentand.SelectionRightIndent属性,但我也希望使它们完全对齐(带有微妙的子字符间距,就像 Microsoft Word 的做法一样)。

.SelectionAlignment属性可用,但仅提供LeftCenterRight对齐。

有没有办法在 RichTextBox 中指定完全对齐?如有必要,我愿意深入研究底层 RTF 协议(如果协议本身支持此功能),但我不愿意创建格式化为完全正当理由的文本的位图以嵌入到文档中。

对于它的价值,我正在使用来自 msftedit.dll 的 RICHEDIT50W,并且不能依赖安装了任何版本的 Word 的客户端。

4

1 回答 1

3

您可以像这样扩展 RichTextBox 控件并将PARAFORMAT2 结构的段落对齐成员wAlignment设置为 PFA_JUSTIFY. 要使用此成员,set the PFM_ALIGNMENT flag in the dwMask member.

注意: RichEdit 2.0段落是合理的。RichEdit 3.0 之前的 Rich Edit 控件显示与左边距对齐的文本。

        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 api 的相应 P/Invokes,如示例链接中所述]

于 2012-07-15T20:24:07.107 回答