ListViewで選択列の取得を行いたい


はや  2008-09-19 12:13:45  No: 140476  IP: 192.*.*.*

開発環境はVB2005です。

ListViewで選択された行と列により、次に行うアクションを変えたい。
選択された行はわかるのですが、列の取得の仕方がわかりません。

よろしくお願いいたします。

編集 削除
Hongliang  2008-09-19 12:28:54  No: 140477  IP: 192.*.*.*

ListView は行単位でしか選択できないコントロールですが。
クリックされたらってことなら、ListView.MouseClick イベント辺りで ListView.GetItemAt と ListViewItem.GetSubItemAt を使えばどこがクリックされたのかは判断できます。

用途によっては DataGridView の使用を検討した方がいいかもしれません。

編集 削除
はや  2008-09-19 13:55:04  No: 140478  IP: 192.*.*.*

Hongliangさん、アドバイスありがとうございます。

早速、Webで検索し以下のようなサンプルを見つけました
  ' Get the item at the mouse pointer.
        Dim info As ListViewHitTestInfo = ListData.HitTest(e.X, e.Y)
        Dim subItem As ListViewItem.ListViewSubItem = Nothing
        If Not (info Is Nothing) Then
            If Not (info.Item Is Nothing) Then
                subItem = info.Item.GetSubItemAt(e.X, e.Y)
            End If
        End If
        ' Show the text of the subitem, if found.
        If Not (subItem Is Nothing) Then
            MessageBox.Show(subItem.Text)
        End If
この方法で、クリックした位置の内容の取得は出来るのですが、取得したいのは、項目名をとりたい。
どこかを直せば出来そうな気がするのでが、わかりません。

お手数ですが、詳細な説明をお願いできませんでしょうか。

あと、分け合ってDataGridView は使用できません。

以上です。

編集 削除
はや  2008-09-19 14:25:01  No: 140479  IP: 192.*.*.*

いろいろ検索しているうちに、該当の処理が出来るようになりました。


        Dim row, col As Integer
        Dim info2 As ListViewHitTestInfo = ListData.HitTest(e.X, e.Y)
        row = info2.Item.Index
        col = info2.Item.SubItems.IndexOf(info2.SubItem)
        MessageBox.Show(row & ":" & col)
        MessageBox.Show(ListData.Columns.Item(col).Text)  <  ここでOK

Hongliangさんのキーワードのおかげでたどり着けました。
ありがとうございました。

編集 削除