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

文書番号 : 38926     文書種別 : 不具合     登録日 : 2015/07/01     最終更新日 : 2015/07/01
文書を印刷する
対象製品
ActiveReports for .NET 7.0J
状況
回避方法あり
詳細
RichTextBoxコントロールに表示されている文字列の一部のフォントを変更すると、変更した箇所の直後で意図しない改行が発生する場合があります。

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

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

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

◆サンプルコード(VB.NET)
----------------------------------------------------------------
Private Sub Detail_Format(...) Handles Detail.Format
  ' 出力したいテキストを設定します。
  _rtf.Text = "(出力する文字列)"

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

  ' 読み込んだリッチテキスト形式のデータを画像として出力します。
  Dim bmp As New Bitmap(630, 750)
  _rtf.RenderTo(Graphics.FromImage(bmp), New Rectangle(0, 0, 630, 750))

  ' Pictureコントロールに上記の画像を設定します。
  Me.Picture1.Image = bmp
End Sub
----------------------------------------------------------------

◆サンプルコード(C#)
----------------------------------------------------------------
private void Detail_Format(object sender, EventArgs e)
{
  // 出力したいテキストを設定します。
  _rtf.Text = "(出力する文字列)";

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

  // 読み込んだリッチテキスト形式のデータを画像として出力します。
  Bitmap bmp = new Bitmap(630, 750);
  _rtf.RenderTo(Graphics.FromImage(bmp), new Rectangle(0, 0, 630, 750));

  // Pictureコントロールに上記の画像を設定します。
  this.Picture1.Image = bmp;
}
----------------------------------------------------------------
キーワード
08479