リストビューの列順をプログラムで変更するには?

解決


TT  2005-01-15 02:17:41  No: 118911

VB.NETでのListViewについての質問です。

ListView1.View = View.Details
ListView1.HeaderStyle = ColumnHeaderStyle.Nonclickable
ListView1.AllowColumnReorder = True
ListView1.MultiSelect = False
ListView1.Columns.Add("Main", 100, HorizontalAlignment.Left)
ListView1.Columns.Add("Sub", 100, HorizontalAlignment.Left)
ListView1.Items.Add("あいうえお").SubItems.Add("かきくけこ")

としたとき、プログラムを実行してマウスで直接2列目を1列目に移動した場合は、
項目を選択すると2列目の「あいうえお」が選択されますが、
プログラムによって最初からその状態になるようにするにはどのようにプログラムをくめばいいのでしょうか?


魔界の仮面弁士  2005-01-15 02:52:34  No: 118912

現行バージョンだと、APIが必要かな…。

Private Declare Auto Function SendMessage Lib "user32"( _
     ByVal hWnd As IntPtr, ByVal msg As Integer, _
     ByVal wParam As Integer, ByVal lParam() As Integer) As Integer
Private Const LVM_SETCOLUMNORDERARRAY As Integer = &H1000 + 58

'列順を表す配列。2列の時の初期状態は{0, 1}。
Dim Order() As Integer = {1, 0}

'並び替え実行
SendMessage(ListView1.Handle, LVM_SETCOLUMNORDERARRAY, Order.Length, Order)
ListView1.Refresh()


TT  2005-01-15 03:04:00  No: 118913

さっそくのご解答ありがとうございます。
おかげさまで無事解決できました。
どうもありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加