0

現在、RichTextBox コントロールから派生したコントロールを使用して印刷用のレポートを生成しています。.SelectionIndentおよびプロパティでインデントされた段落がいくつかあり.SelectionRightIndentますが、それらを完全に両端揃えにしたいとも考えています (Microsoft Word のように、微妙なサブ文字の間隔を空けて)。

このプロパティは使用できますが、 、、および配置.SelectionAlignmentのみが提供されます。LeftCenterRight

RichTextBox で Full Justification を指定する方法はありますか? 必要に応じて (プロトコル自体がこの機能をサポートする必要がある場合は) 基礎となる RTF プロトコルを掘り下げるつもりですが、文書に埋め込むために完全な位置揃えにフォーマットされたテキストのビットマップを作成するつもりはありません。

価値があるのは、msftedit.dll の RICHEDIT50W を使用しているため、どのバージョンの Word もインストールされているクライアントに依存することができないからです。

4

1 に答える 1

3

このように RichTextBox コントロールを拡張し、PARAFORMAT2 構造体のParagraph 配置メンバーwAlignmentを に 設定できPFA_JUSTIFYます。このメンバーを使用するには、set the PFM_ALIGNMENT flag in the dwMask member.

注意: 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 API の対応する P/Invokes を記述する必要があります]

于 2012-07-15T20:24:07.107 に答える