開発環境はVB2005です。
ListViewで選択された行と列により、次に行うアクションを変えたい。
選択された行はわかるのですが、列の取得の仕方がわかりません。
よろしくお願いいたします。
ListView は行単位でしか選択できないコントロールですが。
クリックされたらってことなら、ListView.MouseClick イベント辺りで ListView.GetItemAt と ListViewItem.GetSubItemAt を使えばどこがクリックされたのかは判断できます。
用途によっては DataGridView の使用を検討した方がいいかもしれません。
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 は使用できません。
以上です。
いろいろ検索しているうちに、該当の処理が出来るようになりました。
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さんのキーワードのおかげでたどり着けました。
ありがとうございました。