[FlexGrid for WinForms] TrimmingをEllipsisCharacterに、WordWrapをTrueに設定すると、テキストの折り返しが以前と異なる

文書番号 : 82444     文書種別 : Limit
登録日 : 2017/11/21     最終更新日 : 2017/11/21

対象製品

Studio for WinForms

詳細

TrimmingプロパティをEllipsisCharacterに、WordWrapプロパティをTrueに設定したスタイルを、C1FlexGridのセルに適用したとき、セルに入りきらない長い文字列の表示が以前のバージョンとは異なる結果になります。また半角文字列/全角文字列であるかによっても違いが出ます。

(A-1) 半角文字、ケース1(例:"aaaaabbbbbcccccdddddeeeeefffffggggghhhhhiiiiikkkkk"を設定)
 文字列は折り返されず、トリミングを示す記号が「aaaa...」のように表示される。

(A-2) 半角文字、ケース2(例:"aaaaa bbbbbcccccdddddeeeeefffffggggghhhhhiiiiikkkkk"を設定)
 ※"aaaaa”の後に半角スペースがある場合
 文字列は折り返され2行表示となり、2行目にトリミングを示す記号が「bbbbb...」のように表示される。

(B-1) 全角文字、ケース1(例:"あああああいいいいいうううううえええええおおおおお"を設定)
 文字列は折り返されるが、トリミングを示す記号は表示されない。


(B-2) 全角文字、ケース2(例:"あああああ いいいいいうううううえええええおおおおお"を設定)
 ※"あああああ”の後に半角スペースがある場合
 (B-1)と同じ結果。


なお、旧バージョン(ビルド4.6.20142.842で確認)では、半角/全角文字に関わらす、TrimmingとWordWrapが適用され、文字列が折り返され、さらにセルからはみ出した分についてはトリミングを示す記号が「...」と表示されました。

本動作は、仕様上の制限となります。

ビルド4.6.20142.842から現バージョン(4.0.20172.271)までの間に、文字列処理に関して内部的な数多くの改善が行われてきており、以下のように動作します。

・Trimmingプロパティは、ワード単位での処理となります。
 このとき、半角文字列の場合は、空白までが1ワードとなります(例:"aaaaa bbbbb"なら2ワード)。
 一方、全角文字列の場合は、文字ごとに1ワードとなります("あい"なら2ワード)。

・WordWrapプロパティも同様に、ワード単位での折り返しとなります。
 単一ワード内での折り返しは行われません。

そのため、上述したような結果となります。

回避方法

旧バージョンと同様の動作にするには、UseCompatibleTextRenderingプロパティをTrueに設定します。

◎サンプルコード(VB)
C1FlexGrid1.UseCompatibleTextRendering = True

◎サンプルコード(C#)
c1FlexGrid1.UseCompatibleTextRendering = true;