2

次のように、一連のファイルを一覧表示する listView と、ユーザーが FTP サーバーからファイルをダウンロードできるようにする一連のチェックボックスがあります。

Filename            Size    Last modified           New version
[ ] someimage.jpg   120 kB  2010-01-13 16:12:59     Yes
[ ] otherfile.zip   12 kB   2009-12-29 09:33:15     No
[ ] folder      -   -                               -

フォルダーにチェックボックスを付けたくありませんが、リストに表示するにはそれ(フォルダー)が必要です。

これをどのように並べ替えるのが最善ですか?

更新: Windows フォームを使用しています。

4

1 に答える 1

2

リストボックスをOwnerDraw状態にすることができます(OwnerDrawプロパティにtrueを設定します)。次に、DrawSubItemおよびDrawColumnHeaderイベントハンドラーを定義します。DrawSubItemで、チェックボックスを描画する必要があるアイテムのデフォルトのペイントを実行します。以下のコードを確認してください。テキストフィールドに「1」が含まれるアイテムのチェックボックスの描画をスキップし、アイテムのテキストのみを描画する必要があります。

private void listView1_DrawSubItem(object sender, DrawListViewSubItemEventArgs e)
{
    if (e.ColumnIndex == 0 && e.Item.Text=="1")
    {
        e.DrawBackground();
        e.DrawText();
    }
    else
    {
        e.DrawDefault = true;
    }
}

private void listView1_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e)
{
    e.DrawDefault = true;
}

別の方法として、 CheckBoxRendererクラスを使用して独自のチェックボックスペイントを行うことができます

これがお役に立てば幸いです

于 2010-02-01T00:16:39.327 に答える