2

たくさんのグーグルを行った後、これが可能かどうかはわかりませんが、うまくいけば可能です。MySQL データベースから情報のリストを取得し、リストビューに入力するアプリケーションがあります (残念ながら、現時点ではデータグリッドに変更できません)。ウィンドウが開き、クリックされた行の ID に基づいて、同じデータベースから別の結果セットが取得されます。

リスト ビューは次のように作成されます。

   Do While result.Read()
        Dim siteid = (result.Item("idsite").ToString())
        Dim sitename = (result.Item("name").ToString())
        Dim last_import_date = (result.Item("import_finished").ToString())
        Dim last_import_file = (result.Item("file_name").ToString())
        Dim last_line = (result.Item("last_line").ToString())
        Dim status = (result.Item("status").ToString())

        Dim lv As ListViewItem = ListView1.Items.Add(siteid)
        lv.SubItems.Add(sitename)
        lv.SubItems.Add(last_import_date)
        lv.SubItems.Add(last_import_file)
        lv.SubItems.Add(last_line)
        lv.SubItems.Add(status)
    Loop

できれば、「Last_import_file」をクリックしてウィンドウを開きたいと思います。私はたくさんの ItemClicked タイプのコマンドを試しましたが、うまくいきませんでした。

私が試みていることは可能ですか?特別なテキストの書式設定は必要ありません。クリックを登録してダイアログを開きたいだけです。

ありがとう!

4

1 に答える 1

4

はい、可能です。Listview でこれを行うには、DataGridView よりも少し複雑です。ListViewHitTestInfoクラスを利用する必要があります。リストビューのイベントを使用して、次のMouseDownコードを使用します。

Private Sub ListView1_MouseDown(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles ListView1.MouseDown
    Dim info As ListViewHitTestInfo = ListView1.HitTest(e.X, e.Y)
    MsgBox(info.Location.ToString())
    If Not IsNothing(info.SubItem) Then
        'info will contain the information of the clicked listview column. You can then go through it's subitems for more information, if any.
    End If
End Sub
于 2013-05-23T16:38:56.993 に答える