|
分類:[C#]
初めまして。スマートな解決方法が見つからないため、ご質問させて頂きます。
DataGridViewのセルの表示に関してなのですが、 文字列がセルの幅を超えても改行されないようにするには、 セルスタイルのDefaultCellStyle.WrapModeプロパティをDataGridViewTriState.Falseにしますが、 この時、文字列がセルの幅を超えた場合は、省略記号として文字列のお尻に「...」が入ります。
等幅のフォントを使用している都合上、セルの幅に対するこの「...」の幅の割合が高くなってしまい、 ただでさえセルに入りきらない文字列が「...」によってさらに短くされてしまっている状態です。 そこで、この「...」は表示させずにセルに表示できる分だけの文字列を全て表示させる方法を探しています。
いくつか条件があり、 @行高さを変えたくないため、改行はさせない。 A文字列自体をセル幅に合わせて切ってしまうのは、実行時にユーザーがセル幅(列幅)を変えた場合に都合が悪い。 B「Reflector」という逆アセンブルソフトを使って、描画部分のコードを見たのですが、 Paintメソッドの中で更にPaintPrivateという非公開のプライベートメソッドを使用して「...」の処理&描画をしており、 Paintメソッドをオーバーライドしただけでは簡単にはいかない(そのPaintPrivateを自作しないといけない)。
実際にBに書いたようにPaintPrivateを自作して、現状は正常に動作しているのですが、自作である以上、 何かの際に不具合が出ないとも限らないので、もしかしたらもっと良い方法があるのではと思いご質問させて頂きました。 宜しくお願い致します。
|