CalendarGridではGDI+互換モードによる文字描画を行う場合、環境依存文字が正しく描画されません。この現象は、当該文字を.NET Frameworkより提供されるGraphicsクラスのDrawStringメソッド呼び出しにて描画した場合と同様です。
ここで定義する環境依存文字とは次のものを指します。
- 新JIS漢字(JIS X 0213:2004、JIS2004)のサロゲート文字
- Unicode6.0で追加された絵文字(emoji)
- IVS(Ideographic Variation Sequence)を含む文字
CalendarGridはGDI+互換モードによる文字描画を行う場合には、このGraphicsクラスの機能を用いて非編集セルへの文字列描画などを行っていますので、描画される結果はすべて.NET Frameworkの仕様に依存します。
環境依存文字の表示
.NET Framework 2.0以降では新たにSystem.Windows.Forms.TextRendererクラスが追加されており、GraphicsクラスがGDI+ベースの文字列描画を行うのに対し、TextRendererクラスはGDIベースの文字列描画を行います。このTextRendererクラスメンバであるDrawTextメソッド呼び出しを行った場合、上記の環境依存文字は正しく描画されます。詳細についてはMSDNライブラリをご覧ください。
CalendarGridはCalendarCellStyle.UseCompatibleTextRenderingプロパティにFalseを設定した場合、GDIベースで文字列描画を行います。この場合は以下のように正しく描画されます。
GDI+の詳細は、「GDI+互換モード」を参照してください。
まとめ
CalendarGridにて環境依存文字を扱う場合、GDIベースの描画モードによって対応できるのはセルの文字列描画に関する問題だけです。それ以外の機能(入力、データベース接続など)については注意すべき点があります。
新JIS漢字(JIS X 0213:2004、JIS2004)のサロゲート文字、Unicode6.0、IVSの詳細については、予めMSDNライブラリなどの各種参考文献をご覧いただくことをお勧めします。また、アプリケーション開発および運用の際には十分な注意を払い、入念な動作検証を行う必要があります。
|
注意
- TexyBox型セルで入力文字数を制御する場合、環境依存文字は2文字として扱われます。
- GcTextBoxCellおよびGcComboBoxCellではMaxLengthUnitプロパティの設定値に応じて文字数およびバイト数がカウントされます。
- サロゲート ペア文字やIVSを含む文字の入力制御はInputManCellでのみ可能です。
- 環境依存文字の編集セル内でのキー操作(カーソルキー、Backspaceキー、Deleteキー)は標準のTextBoxコントロール等と同様です。
- 編集中セルでは環境依存文字が正しく描画されます。CalendarGridでは、編集コントロールにSystem.Windows.Forms.TextBox クラスを継承したコントロールを利用しており、先述のような.NET Frameworkの仕様に依存しません。
- 環境依存文字を含むデータベースとの接続を行う場合は、予めご利用のデータベースにおける当該文字の扱いに関して確認してください。CalendarGridではデータベース側での問題(制限事項など)に対応することはできません。
|