none
listViewのcolumnHeaderについて RRS feed

  • 質問

  • listViewにてご相談させて下さい。

    『列の編集』->『columnHeaderコレクションエディタ』で
    columnHeader1を追加しました。(TextはNAME)

    設定を以下のようにし、
    listView1.View = View.Details;
    listView1.FullRowSelect = true;
    listView1.ListViewItemSorter = lvwColumnSorter;

    実行したのですが
    何も項目が追加されていない時に
    columnHeaderのWidthをNAMEにあわせる為に
     | をダブルクリックすると
    NAMEの文字幅に合わずに凄く小さなものになってしまいます。

    1つでも項目が追加されていれば
    項目の文字列の長さに調節されるのですが・・・。

    このような場合はどうしたら言いのでしょうか?

    windowsはキチンとなると言われて困っています。

     

    2009年7月2日 15:29

回答

  • windowsはキチンとなると言われて困っています。
    その"Windows"は何を指し示しているのか聞いてみては?
    "Windows"と言われて思い浮かべたエクスプローラで試しましたが、Windows XPのエクスプローラを詳細表示にして、空のフォルダでカラムの区切り線をダブルクリックすると小さくなりますが、今起きている現象はこれと同じですよね?
    (Vistaや7の挙動は未確認)

    ところで、対策できるとして、どのような結果を求めますか?
    カラムの文字列の長さ?何も起こらない?

    その「きちんとなる」が要求であるとすれば、それをちゃんとヒアリングしましょう。
    聞いているのであれば、それを説明してみて下さい。
    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    • 回答としてマーク sk7474 2009年7月22日 8:56
    2009年7月2日 16:14
    モデレータ
  • 例えば、アイテムが何もない場合はダブルクリックもカラムサイズ変更も無視するというアプローチであった場合、CodeProjectのサンプルを元に作ることができると思います。

    http://www.codeproject.com/KB/list/myListViewNoSize.aspx

    # LockColumnSizeプロパティの代わりにItems.Count == 0でチェックすれば良い。
    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    • 回答としてマーク sk7474 2009年7月22日 8:56
    2009年7月2日 16:24
    モデレータ
  • 「アルバムのアーティスト」列なら省略表示されます。最小表示幅が大きめなだけで、列タイトルに合わせてる訳じゃありませんよ。

    列タイトルの長さに合わせるのは、最右列以外なら AutoResizeColumn で問題ないですが、最右列は処理が違うんで単純ではないですねー。
    • 回答としてマーク sk7474 2009年7月22日 8:56
    2009年7月3日 0:08
  • たぶん、以下で書かれていることですよね。VBのコードですが、解決策も載っています。

    Autosize Columns in a ListView
    http://www.devnewsgroups.net/group/microsoft.public.dotnet.framework.windowsforms/topic47437.aspx


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    • 回答としてマーク sk7474 2009年7月22日 8:56
    2009年7月3日 1:07
    モデレータ

すべての返信

  • windowsはキチンとなると言われて困っています。
    その"Windows"は何を指し示しているのか聞いてみては?
    "Windows"と言われて思い浮かべたエクスプローラで試しましたが、Windows XPのエクスプローラを詳細表示にして、空のフォルダでカラムの区切り線をダブルクリックすると小さくなりますが、今起きている現象はこれと同じですよね?
    (Vistaや7の挙動は未確認)

    ところで、対策できるとして、どのような結果を求めますか?
    カラムの文字列の長さ?何も起こらない?

    その「きちんとなる」が要求であるとすれば、それをちゃんとヒアリングしましょう。
    聞いているのであれば、それを説明してみて下さい。
    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    • 回答としてマーク sk7474 2009年7月22日 8:56
    2009年7月2日 16:14
    モデレータ
  • 例えば、アイテムが何もない場合はダブルクリックもカラムサイズ変更も無視するというアプローチであった場合、CodeProjectのサンプルを元に作ることができると思います。

    http://www.codeproject.com/KB/list/myListViewNoSize.aspx

    # LockColumnSizeプロパティの代わりにItems.Count == 0でチェックすれば良い。
    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    • 回答としてマーク sk7474 2009年7月22日 8:56
    2009年7月2日 16:24
    モデレータ
  • Azuleanさん

    いつもご相談に乗って頂き、有難う御座います。

    当方、Windows Vistaのエクスプローラを詳細表示にして、
    空のフォルダでカラムの区切り線をダブルクリックすると
    カラムサイズは小さくなりますが
    『名前』
    『更新日時』
    『種類』
    の文字に被ってしまう事ないです。

    ..|.|種類|

    のようにです。

    求められているのは
    項目が追加されていれば、『項目の文字幅』
    項目が0ならカラムにある名前(エクスプローラーなら『名前』『更新日時』『種類』)と同じサイズ
    です。

    参考サイトは少し難しかったのでじっくり見てみます。

    2009年7月2日 18:01
  • 「アルバムのアーティスト」列なら省略表示されます。最小表示幅が大きめなだけで、列タイトルに合わせてる訳じゃありませんよ。

    列タイトルの長さに合わせるのは、最右列以外なら AutoResizeColumn で問題ないですが、最右列は処理が違うんで単純ではないですねー。
    • 回答としてマーク sk7474 2009年7月22日 8:56
    2009年7月3日 0:08
  • たぶん、以下で書かれていることですよね。VBのコードですが、解決策も載っています。

    Autosize Columns in a ListView
    http://www.devnewsgroups.net/group/microsoft.public.dotnet.framework.windowsforms/topic47437.aspx


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    • 回答としてマーク sk7474 2009年7月22日 8:56
    2009年7月3日 1:07
    モデレータ
  • こんにちは。中川俊輔です。

    皆様、詳しい回答ありがとうございます。

    zilch_1975さん、フォーラムのご利用ありがとうございます。
    その後いかがでしょうか?サイズの調整はうまくいくようになりましたか?
    勝手ながら、有用な情報と思われる回答へ回答マークをつけさせていただきました。

    今後ともフォーラムをよろしくお願いします。
    それでは!
    マイクロソフト株式会社 フォーラム オペレータ 中川 俊輔
    2009年7月22日 8:57