none
RichTextBox の両端揃え RRS feed

  • 質問

  • 両端揃えに設定したリッチテキストファイル(MS-WORDから出力)をRichTextBoxに読み

    込むと左揃えになってしまいます。MSに対策を質問しても「VBで対応するのは不可能。

    独自の機能で実現するにも多大な工数が必要となるので対応の範囲外」との冷たい?

    返事でした。諦めきれずに居たところ、以下の英語のページを見つけました。

     

    http://geekswithblogs.net/pvidler/archive/2003/10/15/182.aspx

     

    要点を翻訳すると次のようになります。
    「RichTextBoxのプロパティに両端揃えがないことについてずっと気分が悪かった。
    特に、

    Richedit Controlではそれが可能だと知ってからは。以下のコードはSelectionAlignment

    を置き換えて、もう少し良い表示にするものです。これによって、TextAlignmentの列挙体

    はLeft, Right, Center, Justify(両端揃え)の4つになります」

     

    C#で書かれたコードは理解できませんので、VBに翻訳してみたのですが、私の乏しい知

    識では、「新しいプロパティを作っているのかな?」と推測するのが精一杯です。

    どなたか知識のある方、このコードの使用方法を教えて頂けないでしょうか。

     

    '/ <summary>
    '/ Gets or sets the alignment to apply to the current
    '/ selection or insertion point.
    '/ </summary>
    '/ <remarks>
    '/ Replaces the SelectionAlignment from
    '/ <see cref="RichTextBox"/>.
    '/ </remarks>

    Public Shadows Property SelectionAlignment() As TextAlign
       Get
          Dim fmt As New PARAFORMAT()
          fmt.cbSize = Marshal.SizeOf(fmt)
         
          ' Get the alignment.
          SendMessage(New HandleRef(Me, Handle), EM_GETPARAFORMAT, SCF_SELECTION, fmt)
         
          ' Default to Left align.
          If(fmt.dwMask And PFM_ALIGNMENT) = 0 Then
             Return TextAlign.Left
          End If
          Return CType(fmt.wAlignment, TextAlign)
       End Get
      
       Set
          Dim fmt As New PARAFORMAT()
          fmt.cbSize = Marshal.SizeOf(fmt)
          fmt.dwMask = PFM_ALIGNMENT
          fmt.wAlignment = CShort(value)
         
          ' Set the alignment.
          SendMessage(New HandleRef(Me, Handle), EM_SETPARAFORMAT, SCF_SELECTION, fmt)
       End Set
    End Property

    2008年5月27日 9:35

回答

すべての返信

  • 私が試す限り、その方法では、両端ぞろえはできません。

    なぜ、できないのかはわかりません。

    2008年5月28日 10:40
  • はなはなはなさん、テストして頂きありがとうございました。

    そうですか、やはり難しいですか。でも、諦めずに、もう少し

    調べてみたいと思っています。

    追伸:

    先日のListViewの列幅固定の件では大変助かりました。

    ありがとうございました。

     

    2008年5月29日 2:19