Alignment(TextAlign)プロパティでテキストの水平位置を設定する時、文字列の最後のスペースが無視される

文書番号 : 37779     文書種別 : 使用方法     登録日 : 2015/11/16     最終更新日 : 2015/11/16
文書を印刷する
対象製品
ActiveReports for .NET 9.0J
詳細
こちらの動作は、ActiveReports for .NETのTextBoxやLabelコントロールの仕様となります。

TextBoxやLabelコントロールには、コントロール内の文字列の水平位置を設定するために、以下のようなプロパティを用意しています。

セクションレポートの場合:Alignmentプロパティ
ページレポート/RDLレポートの場合:TextAlignプロパティ


これらのプロパティによってテキストの水平位置を変更する時、文字列の最後にあるスペース文字は無視されます。

例えば、"あいう  "という文字列を、右揃えに設定したTextBoxコントロールに表示させた場合、コントロールの右端から"あいう"と表示されます。

| あいう  |←このようには表示されません。
|   あいう|←このように表示されます。

また、" あいう "という文字列を、中央揃えに設定したTextBoxコントロールに表示させた場合、" あいう"という文字列を中央揃えした時の同じ状態で表示されます。

これは.NET Framework標準のLabelコントロールなどと同様の動作であり、この動作を無効にするような機能は、特に用意されておりません。


代替案としては、テキストの水平位置を"左揃え"に設定し、文字列の頭にスペースを挿入する方法が考えられます。
たとえば、StringクラスのPadLeftメソッドを使用することで、指定した文字数になるように先頭にスペースを挿入することが可能です。

以下のサンプルコードは、セクションレポートにおいて、全体として8文字になるように全角スペースを挿入する場合のコードです。

◆サンプルコード(VB.NET)
Private Sub Detail_Format(sender As Object, e As EventArgs) Handles Detail.Format
  Me.TextBox1.Text = Me.TextBox1.Text.PadLeft(8, " "c)
End Sub

◆サンプルコード(C#)
private void Detail_Format(object sender, EventArgs e)
{
  this.textBox1.Text = this.textBox1.Text.PadLeft(8, ' ');
}

ページレポートの場合は、Valueプロパティに以下のような式を設定してください。

◆式
=Fields!FieldName.Value.ToString().PadLeft(8," "c)


なお、上記のようにスペース文字によって出力桁位置を調整する場合には、プロポーショナルフォントではなく、固定ピッチフォントを指定することをお勧めいたします。
関連情報
キーワード
問題 デザイン・レイアウト