ListViewコントロール内のデータを並べ替える

を使用して基礎以前の例を 、我々は、どのように表示され視覚的な基本的な。ネット 、自分の列のいずれかでリストビューのデータを並べ替える。

プロジェクトの前には、目的の順序であるかを選択するには、2つのボタンを追加します。 下の写真のように:

その後、同じフォームのコードでは、2つの新しいクラスを(サイズによってOrdenarPorNombreとOrder)を作成し、ボタンのイベントは、我々が選択した順序に対応するクラスの新しいインスタンスを持つListViewのListViewItemSorterプロパティを設定してなめる。 コー​​ドが短いので、多くの分析を要しません。 それから私は、フォームのすべてのコードを残す:

輸入System.IO
 Public Class Form1の

プライベートサブをForm1_Load(System.ObjectとしてByValを送信、_
いるSystem.EventArgsとしてByVal e)のハンドルMyBase.Load
薄暗いDの新しいDirectoryInfoのように( "C:\ WINDOWS")
 ListView1.View = View.Details
 ListView1.FullRowSelect = Trueに

 ListView1.BeginUpdate()
 ListView1.Items.Clear()

 d.GetFilesでFileInfoのようにそれぞれのfの
新しいListViewItemを(f.Name)として薄暗いアイテム

 item.SubItems.Add(f.length)
 item.SubItems.Add(f.CreationTime)
 item.SubItems.Add(f.LastWriteTime)
 item.SubItems.Add(f.LastAccessTime)

 ListView1.Items.Add(アイテム)
次の
 ListView1.EndUpdate()

 End Subの

します。Private Sub Button1_Click(System.ObjectとしてByValを送信、_
いるSystem.EventArgsとしてByVal e)はButton1.Clickを処理します。
 "名前で並べ替え
 ListView1.ListViewItemSorter =新しいordenarPorNombre
 End Subの

プライベートサブをbutton2_Click(System.ObjectとしてByValを送信、_
いるSystem.EventArgsとしてByVal e)は、Button2.Clickを処理します。
 "サイズで並べ替え
 ListView1.ListViewItemSorter =新しいordenarPorTamaño
 End Subの
エンドクラス

クラスordenarPorNombre
 IComparerを実装してい
パブリック関数は、(オブジェクトとしてByVal Xは、オブジェクトとしてByVal y)は_を比較
整数System.Collections.IComparer.Compareを実装して
 ListViewItemのように薄暗いITEM1 = Cタイプ(Xは、ListViewItem)
して、ListViewItem = Cタイプ(Yは、ListViewItem)として薄暗い項目2
 String.Compare(item1.Text、item2.Text)を返す
エンド機能
エンドクラス
クラスordenarPorTamaño
 IComparerを実装してい

パブリック関数は、(オブジェクトとしてByVal Xは、オブジェクトとしてByVal y)は_を比較
整数System.Collections.IComparer.Compareを実装して
 ListViewItemのように薄暗いITEM1 = Cタイプ(Xは、ListViewItem)
して、ListViewItem = Cタイプ(Yは、ListViewItem)として薄暗い項目2
 Math.Signリターン((item1.SubItems(1)CLngテキスト) -  CLng(item2.SubItems(1)テキスト)。)
エンド機能
エンドクラス

いつものように、私はコードが役に立つことを願っています。

"ListView内のデータのソート"への11の応答

  1. Bitacoras.comは 言う:

    情報Bitacoras.com ...

    Bitacoras.comのレート:基礎として、上記の例を使用して、我々は、どのようにその列のいずれかでVisual Basic。NETのListViewコントロールの並べ替えデータが表示されます。 以前のプロジェクトの順序であるかを選択する2つのボタンを追加します.....

  2. ローラは言う:

    OK、大丈夫です、が...これは単なる昇順上下に注文してするために、列ヘッダーのクリックを与える?

  3. エリシャは言います:

    こんにちはローラ:

    降順で名前で注文するだけでクラスOrdenarPorNombreで返される変数を逆にする必要があります...あなたは変更する必要があります。
    String.Compare(item1.Text、item2.Text)を返す
    このために:
    String.Compare(item2.Text、item1.Text)を返す

    と数値順の場合にこれを変更、ordenarPorTamañoケースによって返された符号を逆にする必要があります。
    Math.Signリターン((item1.SubItems(1)CLngテキスト) - CLng(item2.SubItems(1)テキスト)。)
    このために:
    CLng(。item2.SubItems(1)テキスト))* -1) - ()CLng(。item1.SubItems(1)テキスト)Math.Signを返します。

    私は別の記事を捧げたいと思うので、最終的にリストビューのクリック列を与えるために、ここでコメントしていないことを伝える。

    挨拶、エリシャ

  4. オスカーは言う:

    日付と日付の降順のいずれかのフィールドでご注文として、例えば、作成されます。

    • エリシャは言います:

      次のクラスを追加して、必要なボタンに割り当てることができます。

      クラスordenarPorFechaCreacion
      IComparerを実装してい

      パブリック関数は、(オブジェクトとしてByVal Xは、オブジェクトとしてByVal y)は_を比較
      整数System.Collections.IComparer.Compareを実装して
      ListViewItemのように薄暗いITEM1 = Cタイプ(Xは、ListViewItem)
      して、ListViewItem = Cタイプ(Yは、ListViewItem)として薄暗い項目2
      (Date.parse(item1.SubItems(2)テキスト)、Date.parse(item2.SubItems(2)テキスト))Date.Compareを返します。
      エンド機能
      エンドクラス

  5. ロクサーナは言う:

    人にはサインインしてください。
    C#で同じ順序のための文でしょうか?

  6. bebrafraptaugは言う:

    dobry開始

  7. ジョシュアは言う:

    ケースで私はリストを持っている場合
    23 = 5 +5 13
    5 = 1 +1 +1 +2
    4 = 3 +1
    など.....
    私は結果が私は231 = 100 100 31 23 = 5 +5 13の後に置くのされなかった場合の数字でそれを注文するように私は行うことができます

  8. ビクターは言う:

    良い午後、

    ご迷惑をおかけしますが、一度に2つのカラムでソートすることができます方法を知っているのだろうか? このような何か:
    XYZ
    ABA - > 1
    BAA - > 2
    > 3 - bに

    左:

    XYZ
    > 3 - bに
    ABA - > 1
    BAA - > 2

    あなたは、また私には有用であった同じ情報を転記するためのおかげで助けとならなかった場合は、スーパー感謝しています。

  9. Cinthiaは言った:

    そして、あなたがデートしたい場合..... これは、作成日だけでなくです。

コメント