- PR -

ListViewで折り返し表示は可能でしょうか?

投稿者投稿内容
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2005-12-13 02:05
引用:

そもそも
引用:

列の幅を表示データが超えた時に、デフォルトの設定では「・・・」で省略されますが、これを列の幅で折り返されるようにすることは可能でしょうか?


というご質問だったと思うんですが
そういうふうにできるということですか?????



出来ると思いますよ。

カスタムドローでサブアイテムの矩形が通知されますから、そこに Graphics.DrawString() すれば(必要なら)折り返されます。
ジブ
大ベテラン
会議室デビュー日: 2005/09/22
投稿数: 135
投稿日時: 2005-12-13 02:26
引用:

渋木宏明(ひどり)さんの書き込み (2005-12-13 02:05) より:
カスタムドローでサブアイテムの矩形が通知されますから、そこに Graphics.DrawString() すれば(必要なら)折り返されます。




それは確かに取れますけど、折り返された文字はどこへ書かれますか?

あまり意味がないように思えるんですけど。
ジブ
大ベテラン
会議室デビュー日: 2005/09/22
投稿数: 135
投稿日時: 2005-12-13 02:36
引用:

それは確かに取れますけど、折り返された文字はどこへ書かれますか?
あまり意味がないように思えるんですけど。



フォントを小さくして、範囲内に入れるってのはよい方法かも。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-12-13 08:52
やはり、最初に予想していた結論になっちゃうんですかね。
もともと高さを変えるとアクセシブルじゃなくなってしまう (もはや、別コントロール) ので、
省略での対応が望ましいと思うんですけどね。(つまりノーマルが 1 番親切)

それこそ、Grid 系のコントロールを使った方が早いと思いますし。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2005-12-13 12:25
引用:

それは確かに取れますけど、折り返された文字はどこへ書かれますか?



次の行に書かれると思いますけど?

行の高さは、各行個別にはできませんが、1列目のイメージの高さ(イメージが不要な時は透明な横幅1ピクセルのイメージを与えます)で調整可能です。
ジブ
大ベテラン
会議室デビュー日: 2005/09/22
投稿数: 135
投稿日時: 2005-12-13 22:57
つまり、カスタムドローでも無理だという結論ですよね。。。

なんと回りくどい。

元質問者様が気の毒に思えます。
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2005-12-13 23:33
引用:

つまり、カスタムドローでも無理だという結論ですよね。。。



どして? 各行の高さを個別に変えられないのがイヤってことですか?

最初の方を良く見てないんですが、そういう制約が指定されてるんでしたっけ?

すべての行があらかじめ2行分の高さをもったリストってのも見かけないでもないんで、「あり」だと思ったんですが。


_________________
// 渋木宏明 (Hiroaki SHIBUKI)
// http://hidori.jp/
// Microsoft MVP for Visual C#

[ メッセージ編集済み 編集者: 渋木宏明(ひどり) 編集日時 2005-12-13 23:34 ]
ジブ
大ベテラン
会議室デビュー日: 2005/09/22
投稿数: 135
投稿日時: 2005-12-14 00:37
引用:

渋木宏明(ひどり)さんの書き込み (2005-12-13 23:33) より:
引用:

つまり、カスタムドローでも無理だという結論ですよね。。。



どして? 各行の高さを個別に変えられないのがイヤってことですか?

最初の方を良く見てないんですが、そういう制約が指定されてるんでしたっけ?

すべての行があらかじめ2行分の高さをもったリストってのも見かけないでもないんで、「あり」だと思ったんですが。




あ、そうですね。高さの部分が焦点になっているような錯覚をしていました。
失礼しました。

それと、確かMeasure系のメッセージもありませんでしたっけ?
もしかしてそういう門外不出の荒業があったりするのかななどと考えたりしていました。

私事でなんですが、DataGridでリフレクションとかも駆使していろいろやってみた経験上、
そもそも最低Protectedなメソッドなりが準備されていないと基本的に運次第でしかないように思えます。
たぶん何をやっても無理だろう(たとえ特定のバージョンでうまくいったとしても別な環境では動かないことを前提にしないといけない)なと個人的には思っています。

ずいぶん脱線しましたが、結論として、高さ固定ならば
NM_CUSTOMDRAW を拾って描画すれば、【多分】できるだろう?ということでよろしいでしょうか?

どなたか実際にやってみた方はいらっしゃらないものでしょうか?

それと、高さ可変はたぶん無理だろうということでよろしいでしょうか?

個人的にはお勧めできないなと思っています。
勉強目的であればとてもよい材料だろうなとも思ったりします。

よこからしゃしゃりでてしまって申し訳ありませんでした。

スキルアップ/キャリアアップ(JOB@IT)