RichTextBoxコントロールで文字列の一部のフォントを変更すると、意図しない改行が発生する場合がある
対象製品
ActiveReports for .NET 7.0J
状況
回避方法あり
詳細
RichTextBoxコントロールに表示されている文字列の一部のフォントを変更すると、変更した箇所の直後で意図しない改行が発生する場合があります。
この事象は、コントロール幅に収まりきらない文字列(ワードラップが発生し得る長さの文字列)に対してフォントを変更した場合にのみ発生します。コントロール幅に収まる文字列(1行に収まる長さの文字列)の場合には発生しません。
なお、事象が発生するフォント関連のプロパティは、SelectionFont、SelectionColor、SelectionBackColor、SelectionCharOffsetが該当し、デザイン時および実行時の両方で発生します。
この事象は、コントロール幅に収まりきらない文字列(ワードラップが発生し得る長さの文字列)に対してフォントを変更した場合にのみ発生します。コントロール幅に収まる文字列(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;
}
----------------------------------------------------------------
[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