
No.1ベストアンサー
- 回答日時:
もっと効率のよいやり方があるのかもしれませんが...
===============================
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
'データ作成
Dim DT As DataTable = New DataTable
DT.Columns.Add("Field1", GetType(String))
DT.Columns.Add("Field2", GetType(String))
DT.Columns.Add("Field3", GetType(String))
For i As Integer = 1 To 10
Dim row As DataRow = DT.NewRow()
row("Field1") = i
row("Field2") = Rnd().ToString
row("Field3") = Rnd().ToString
DT.Rows.Add(row)
Next
'リストビュー生成
With Me.ListView1
.Items.Clear()
.View = View.Details
.GridLines = True
.CheckBoxes = False
.FullRowSelect = True
.Columns.Clear()
With .Columns
.Add("Field1", 100, HorizontalAlignment.Left)
.Add("Field2", 100, HorizontalAlignment.Left)
.Add("Field3", 100, HorizontalAlignment.Left)
End With
For Each row As DataRow In DT.Rows
Dim lst As ListViewItem = New ListViewItem(New String() {CType(row(0), String), CType(row(1), String), CType(row(2), String)})
Me.ListView1.Items.Add(lst)
Next
End With
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim DT As DataTable = New DataTable
DT.Columns.Add("Field1", GetType(String))
DT.Columns.Add("Field2", GetType(String))
DT.Columns.Add("Field3", GetType(String))
For Each lst As ListViewItem In Me.ListView1.Items
Dim row As DataRow = DT.NewRow()
row(0) = lst.SubItems(0).Text
row(1) = lst.SubItems(1).Text
row(2) = lst.SubItems(2).Text
DT.Rows.Add(row)
Next
'ソート
Dim SortedRows() As DataRow = DT.Select("", "Field3 ASC, Field1 ASC")
'リストビュー再描画
Me.ListView1.Items.Clear()
For Each newrows As DataRow In SortedRows
Dim lst As ListViewItem = New ListViewItem(New String() {CType(newrows(0), String), CType(newrows(1), String), CType(newrows(2), String)})
Me.ListView1.Items.Add(lst)
Next
End Sub
丁寧にコードまで書いていただき、ありがとうございます。
お陰様で問題を解決できました。
それにしても、本当にSQL文のようなソートをしてくれるメソッドがあるんですね。少し驚きました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
VBAでListviewの並べ替えを数値で行なうには
Excel(エクセル)
-
ListViewで複数選択された項目を一度に削除する方法
Visual Basic(VBA)
-
VBA ListViewの選択Itemを削除する
Excel(エクセル)
-
-
4
ListView 項目の選択/選択解除について
Visual Basic(VBA)
-
5
ListViewで表示されたデータの選択行指定
Visual Basic(VBA)
-
6
Excel VBA ListViewサブアイテムの文字色
その他(プログラミング・Web制作)
-
7
VBA ソートすると、1、11、2,3になって・・
Excel(エクセル)
-
8
ListViewで列を指定して表示させる方法
Excel(エクセル)
-
9
Listviewのデータを上から順番に取得 VBA
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C# DataGridView のヘッダーセ...
-
System.IO.Directory.GetFiles...
-
VB.NETでファイル名順にファイ...
-
VBA基本構文の作り方 2列の...
-
DataGridViewのソートを止めたい
-
Excelですべての組合せ(重複組...
-
DataGridView の sort
-
C言語のポインタに直接アドレス...
-
CStringからchar*への型変換に...
-
VBAのプログラムで、DIAG = 1# ...
-
newしないオブジェクトについて
-
「#undef」と「#define」の使い...
-
Integer変数をカラにしたいので...
-
allocってなんですか?
-
fopne で失敗する原因
-
free関数で動作が止まる
-
Run-Time Check Failure #3とい...
-
C言語 配列の長さの上限
-
プログラムが途中で強制終了し...
-
配列を使わずに、変数名を動的...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
System.IO.Directory.GetFiles...
-
C# DataGridView のヘッダーセ...
-
あるディレクトリ内のファイル...
-
VBA基本構文の作り方 2列の...
-
VB.NETでファイル名順にファイ...
-
ファイル名「1.jpg ~10.jpg~...
-
C# DataTableの行をソートしてD...
-
Excelですべての組合せ(重複組...
-
DataGridViewソート時に先頭行...
-
構造体配列のソート
-
バブルソートとセレクションソ...
-
VB2005 符号を踏まえた降順ソ...
-
DataGridViewの複数列を連動し...
-
Verilog でのソートの仕方
-
datagridviewの並べ替え
-
2次元配列を複数項目でソートし...
-
VBScriptで重複レコードを削除...
-
GridViewで列のソートを無効に...
-
4番目以降の並べ替え
-
DataGridViewの昇順降順。
おすすめ情報