[08479] RichTextBoxコントロールで文字列の一部のフォントを変更すると、意図しない改行が発生する場合がある

文書番号 : 40147     文書種別 : 制限事項     登録日 : 2017/03/16     最終更新日 : 2017/03/16
文書を印刷する
対象製品
ActiveReports for .NET 11.0J
詳細
RichTextBoxコントロールに表示されている文字列の一部のフォントを変更すると、変更した箇所の直後で意図しない改行が発生する場合があります。

この事象は、コントロール幅に収まりきらない文字列(ワードラップが発生し得る長さの文字列)に対してフォントを変更した場合にのみ発生します。コントロール幅に収まる文字列(1行に収まる長さの文字列)の場合には発生しません。

なお、事象が発生するフォント関連のプロパティは、SelectionFont、SelectionColor、SelectionBackColor、SelectionCharOffsetが該当し、デザイン時および実行時の両方で発生します。
回避方法
以下のナレッジ文書で公開している方法により、同様の動作が実現可能です。
[RichTextBoxコントロールを使用せずにリッチテキスト形式のデータを出力する方法は?【※サンプル有り】]

具体的には、上記サンプルの"NewActiveReport1.vb"または"NewActiveReport1.cs"内のコードを以下のように変更する方法が考えられます。こちらをご参考の上、ご検討ください。

◆サンプルコード(VB.NET)
Private Sub Detail_Format(...) Handles Detail.Format
  ' レポート上に表示するリッチテキスト形式のデータを取得します。
  Dim strRTF As String
  Using rtb = New System.Windows.Forms.RichTextBox()
    ' 出力したいテキストを設定します。
    rtb.Text = "(出力する文字列)"

    ' 文字列の一部の色を変更します。
    rtb.SelectionStart = 0
    rtb.SelectionLength = 5
    rtb.SelectionColor = System.Drawing.Color.Red

    strRTF = rtb.Rtf
  End Using

  ' (以下省略)

End Sub

◆サンプルコード(C#)
private void Detail_Format(object sender, EventArgs e)
{
  // レポート上に表示するリッチテキスト形式のデータを取得します。
  string strRTF;
  using (var rtb = new System.Windows.Forms.RichTextBox())
  {
    // 出力したいテキストを設定します。
    rtb.Text = "(出力する文字列)";

    // 文字列の一部の色を変更します。
    rtb.SelectionStart = 0;
    rtb.SelectionLength = 5;
    rtb.SelectionColor = System.Drawing.Color.Red;

    strRTF = rtb.Rtf;
  }
  
  // (以下省略)

}